r - 使用 data.table 从大型混合数据集中获取相关性
问题描述
我有一些大数据集,我想获得与同一数据集的一个特定变量的相关性。
例如,变量A
与 data.table 中其他变量的相关性。
- 由于数据集的大小,我想使用 data.table。
- 这些数据集不是纯粹的数字,而且是分类的。
- 因此,我希望能够根据变量的类别应用不同的相关方法。我最好对分类变量使用不同的相关性,即斯皮尔曼等级相关性。
例子:
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 等级相关性。有什么建议么?
解决方案
推荐阅读
- php - 在 laravel 5 中写入自定义日志以及 laravel.log
- django - Daphne 使用通道 2 和 Redis 层的 CPU 使用率高
- git - SourceTree 未能推送一些 refs
- java - 以编程方式在 Kik 上打开与联系人的聊天页面
- java - 如何获取字符串的字节数?
- apache-flink - 基于事件时间的 Flink 时间窗口无输出
- .net - 如何提高我的 webAPI 性能以及如何管理图像处理 API 中的 CPU 使用率?
- c#-4.0 - 将字符串字典、字符串列表转换为数据表
- android-studio - Android Studio - Dart 代码格式问题
- ios - 如何绑定 UITableView Header 并且还想通过在 swift 中以编程方式单击 tableview 标题来显示或隐藏 tableview 单元格