Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. data = data.table( group = c(rep("a", 5),rep("b",5),rep("c",5)) , Y = rnorm(15) )
  2.  
  3. group Y
  4. 1: a 0.90855520
  5. 2: a -0.12463737
  6. 3: a -0.45754652
  7. 4: a 0.65789709
  8. 5: a 1.27632196
  9. 6: b 0.98483700
  10. 7: b -0.44282527
  11. 8: b -0.93169070
  12. 9: b -0.21878359
  13. 10: b -0.46713392
  14. 11: c -0.02199363
  15. 12: c -0.67125826
  16. 13: c 0.29263953
  17. 14: c -0.65064603
  18. 15: c -1.41143837
  19.  
  20. group.1 group.2 correlation
  21. a b 0.xxx
  22. a c 0.xxx
  23. b c 0.xxx
  24.  
  25. data[,id:=rep(1:5,3)]
  26. dtw = dcast.data.table(data, id ~ group, value.var="Y" )[, id := NULL]
  27. cor(dtw)
  28.  
  29. # data
  30. set.seed(45L)
  31. data = data.table( group = c(rep("a", 5),rep("b",5),rep("c",5)) , Y = rnorm(15) )
  32.  
  33. # method 2
  34. setkey(data, "group")
  35. data2 = data[J(c("b", "c", "a"))][, list(group2=group, Y2=Y)]
  36. data[, c(names(data2)) := data2]
  37.  
  38. data[, cor(Y, Y2), by=list(group, group2)]
  39.  
  40. # group group2 V1
  41. # 1: a b -0.2997090
  42. # 2: b c 0.6427463
  43. # 3: c a -0.6922734
  44.  
  45. data = data.table( group = c(rep("a", 5),rep("b",5),rep("c",5),rep("d",5)) ,
  46. Y = rnorm(20) )
  47. setkey(data, "group")
  48.  
  49. groups = unique(data$group)
  50. ngroups = length(groups)
  51. library(gtools)
  52. pairs = combinations(ngroups,2,groups)
  53.  
  54. d1 = data[pairs[,1],,allow.cartesian=TRUE]
  55. d2 = data[pairs[,2],,allow.cartesian=TRUE]
  56. d1[,c("group2","Y2"):=d2]
  57. d1[,cor(Y,Y2), by=list(group,group2)]
  58. # group group2 V1
  59. # 1: a b 0.10742799
  60. # 2: a c 0.52823511
  61. # 3: a d 0.04424170
  62. # 4: b c 0.65407400
  63. # 5: b d 0.32777779
  64. # 6: c d -0.02425053
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement