gpt4 book ai didi

r - 使用 cor() 计算相关性,仅适用于数值列

转载 作者:行者123 更新时间:2023-12-03 06:22:39 28 4
gpt4 key购买 nike

我有一个数据框,想计算 correlation (对于 Spearman,数据是分类和排名的)但仅限于列的子集。我尝试了所有,但 R 的 cor () 函数仅接受数值数据(x 必须是数值,错误消息中指出),即使使用 Spearman。

一种简单的方法是从数据框中删除非数字列。这不太优雅,为了速度,我仍然不想计算所有列之间的相关性。

我希望有一种方法可以简单地说“计算列 x、y、z 的相关性”。列引用可以按编号或按名称。我认为提供它们的灵活方式是通过向量。

如有任何建议,我们将不胜感激。

最佳答案

如果您有一个数据框,其中一些列是数字,一些列是其他列(字符或因子),并且您只想对数字列进行关联,则可以执行以下操作:

set.seed(10)

x = as.data.frame(matrix(rnorm(100), ncol = 10))
x$L1 = letters[1:10]
x$L2 = letters[11:20]

cor(x)

Error in cor(x) : 'x' must be numeric

但是

cor(x[sapply(x, is.numeric)])

V1 V2 V3 V4 V5 V6 V7
V1 1.00000000 0.3025766 -0.22473884 -0.72468776 0.18890578 0.14466161 0.05325308
V2 0.30257657 1.0000000 -0.27871430 -0.29075170 0.16095258 0.10538468 -0.15008158
V3 -0.22473884 -0.2787143 1.00000000 -0.22644156 0.07276013 -0.35725182 -0.05859479
V4 -0.72468776 -0.2907517 -0.22644156 1.00000000 -0.19305921 0.16948333 -0.01025698
V5 0.18890578 0.1609526 0.07276013 -0.19305921 1.00000000 0.07339531 -0.31837954
V6 0.14466161 0.1053847 -0.35725182 0.16948333 0.07339531 1.00000000 0.02514081
V7 0.05325308 -0.1500816 -0.05859479 -0.01025698 -0.31837954 0.02514081 1.00000000
V8 0.44705527 0.1698571 0.39970105 -0.42461411 0.63951574 0.23065830 -0.28967977
V9 0.21006372 -0.4418132 -0.18623823 -0.25272860 0.15921890 0.36182579 -0.18437981
V10 0.02326108 0.4618036 -0.25205899 -0.05117037 0.02408278 0.47630138 -0.38592733
V8 V9 V10
V1 0.447055266 0.210063724 0.02326108
V2 0.169857120 -0.441813231 0.46180357
V3 0.399701054 -0.186238233 -0.25205899
V4 -0.424614107 -0.252728595 -0.05117037
V5 0.639515737 0.159218895 0.02408278
V6 0.230658298 0.361825786 0.47630138
V7 -0.289679766 -0.184379813 -0.38592733
V8 1.000000000 0.001023392 0.11436143
V9 0.001023392 1.000000000 0.15301699
V10 0.114361431 0.153016985 1.00000000

关于r - 使用 cor() 计算相关性,仅适用于数值列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com