【发布时间】:2023-03-27 01:10:02
【问题描述】:
如果这些值按组存储在 data.table 的单个列中(而不是将 data.table 转换为矩阵),是否有一种方法可以优雅地计算值之间的相关性?
library(data.table)
set.seed(1) # reproducibility
dt <- data.table(id=1:4, group=rep(letters[1:2], c(4,4)), value=rnorm(8))
setkey(dt, group)
# id group value
# 1: 1 a -0.6264538
# 2: 2 a 0.1836433
# 3: 3 a -0.8356286
# 4: 4 a 1.5952808
# 5: 1 b 0.3295078
# 6: 2 b -0.8204684
# 7: 3 b 0.4874291
# 8: 4 b 0.7383247
可行,但需要组名作为输入:
cor(dt["a"]$value, dt["b"]$value)
# [1] 0.1556371
我正在寻找更多类似的东西:
dt[, cor(value, value), by="group"]
但这并没有给我我所追求的相关性。
对于具有正确结果的矩阵,同样的问题。
set.seed(1) # reproducibility
m <- matrix(rnorm(8), ncol=2)
dimnames(m) <- list(id=1:4, group=letters[1:2])
# group
# id a b
# 1 -0.6264538 0.3295078
# 2 0.1836433 -0.8204684
# 3 -0.8356286 0.4874291
# 4 1.5952808 0.7383247
cor(m) # correlations between groups
# a b
# a 1.0000000 0.1556371
# b 0.1556371 1.0000000
非常感谢任何 cmets 或帮助。
【问题讨论】:
标签: r data.table correlation