从大型混合数据集中获取相关性与data.table

时间:2019-05-07 07:13:00

标签: r vector correlation numeric categorical-data

我有一些大数据集,我希望获得与该同一数据集的一个特定变量的相关性。

例如,变量A与data.table中其他变量的相关性。

  1. 由于数据集的大小,我想使用data.table。
  2. 这些数据集不是纯粹的数字,而是分类的。
  3. 因此,我希望能够根据变量的类别应用不同的相关方法。对于分类变量,我最好使用不同的相关性,即spearman等级相关性。

示例:

library(data.table)
df <- fread(
    "A   B   D  E  iso   year   
     1   A   1  NA ECU   2009   
     2   B   2  0  ECU   2009   
     3   D   3  0  BRA   2011   
     4   E   4  0  BRA   2011   
     5   D   7  NA ECU   2008   
     6   E   1  0  ECU   2008   
     7   A   3  2  BRA   2012   
     8   A   4  NA BRA   2012",
  header = TRUE
)

我使用以下方法获得数字列:

numcols <- which(sapply(df, is.numeric))

数字变量的下一步应该类似于:

dfcor <- df[, x := .(list(cor(.SD, use= "pairwise.complete.obs", method= "pearson"))), by = iso, .SDcols = numcols]

但是,这将创建具有相关向量的列x,而不是用于相关的单独列:

c(1, 0.942908070944406, 0.365636212063565, NA, -0.970142500145332, 0.942908070944406, 1, 0.0509647191437626, NA, -0.845154254728517, 0.365636212063565, 0.0509647191437626, 1, NA, -0.502518907629606, NA, NA, NA, NA, NA, -0.970142500145332, -0.845154254728517, -0.502518907629606, NA, 1)

此外,此答案仅在适用的情况下为我提供了皮尔逊相关性。但是,我也想使用spearman等级相关性。有什么建议吗?

0 个答案:

没有答案