如何在R中找到data.table对象的组的相关矩阵?
为了找到组的相关性,我们可以使用cor函数,但不能直接使用。
为此,我们首先需要为数据表对象的组列设置它们的键。例如,如果我们有一个data.tableDT,其中一个数字列定义为x,一个组列定义为具有4个组a、b、c和d的组,则可以找到组a和b的数值的相关性为-
setkey(DT,Group) cor(DT["a"]$x,DT["b"]$x)
加载data.table包-
library(data.table)
示例
考虑以下data.table对象-
x<-rnorm(20,1,0.04) Class<-rep(LETTERS[1:2],10) DT1<-data.table(x,Class) DT1输出结果
x Class 1: 1.0315869 A 2: 1.0240505 B 3: 0.9820461 A 4: 1.0095865 B 5: 1.0025895 A 6: 1.0076078 B 7: 1.0266381 A 8: 0.9735519 B 9: 1.0457029 A 10: 1.0407300 B 11: 1.0384560 A 12: 0.9798408 B 13: 0.9810080 A 14: 1.0602431 B 15: 0.9968140 A 16: 1.0239540 B 17: 0.9675810 A 18: 1.0723230 B 19: 0.9705898 A 20: 1.0713552 B
找到A类和B类之间的相关性-
示例
setkey(DT1,Class) cor(DT1["A"]$x,DT1["B"]$x)输出结果
[1] -0.6282066
示例
y<-rpois(20,5) Group<-rep(c("S1","S2","S3","S4"),5) DT2<-data.table(y,Group) DT2输出结果
y Group 1: 3 S1 2: 3 S2 3: 5 S3 4: 7 S4 5: 9 S1 6: 6 S2 7: 7 S3 8: 6 S4 9: 4 S1 10: 5 S2 11: 6 S3 12: 4 S4 13: 9 S1 14: 6 S2 15: 4 S3 16: 6 S4 17: 8 S1 18: 5 S2 19: 2 S3 20: 1 S4
示例
setkey(DT2,Group) cor(DT2["S1"]$y,DT2["S2"]$y)输出结果
[1] 0.8502303
示例
cor(DT2["S1"]$y,DT2["S3"]$y)输出结果
[1] -0.1984965
示例
cor(DT2["S1"]$y,DT2["S4"]$y)输出结果
[1] -0.1962715
示例
cor(DT2["S2"]$y,DT2["S3"]$y)输出结果
[1] 0.1061191
示例
cor(DT2["S2"]$y,DT2["S4"]$y)输出结果
[1] -0.1709964
示例
cor(DT2["S3"]$y,DT2["S4"]$y)输出结果
[1] 0.6423677