首页 > 解决方案 > 使用 data.table 从大型混合数据集中获取相关性

问题描述

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

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

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

例子:

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 等级相关性。有什么建议么?

标签: rvectorcorrelationnumericcategorical-data

解决方案


推荐阅读