【发布时间】:2023-03-29 12:43:02
【问题描述】:
我有一个看起来像这样的大数据框“Im”
V1 V7 X134 X135 X136 X137 X138
1 m 1000 543.360 1057.770 1869.42 2664.06 3935.307
2 m 2000 767.256 1704.430 2993.63 5248.06 6341.129
3 m 3000 413.096 796.168 1441.13 3500.46 2962.048
4 a 4000 257.128 559.200 1014.79 2948.64 2080.437
5 a 5000 188.504 440.640 813.60 2538.11 1639.349
6 a 6000 483.704 921.064 1679.98 3626.44 3426.709
....
我想找到 X135 列和所有其他编号的列之间的相关系数,所以换句话说,我基本上需要这个
> cor(Im$X135,Im$X136)
> cor(Im$X135,Im$X134)
> cor(Im$X135,Im$X137)
问题是我需要按“V1”分组的相关性。我正在寻找的输出应该是这样的(使用假设的相关系数)
V1 cc134 cc136 cc137
1 m 0.92 0.99 0.95
1 a 0.99 0.93 0.89
我查看了 tapply、ddply、aggregate 以及我发现的所有内容都是针对 sum 和 average 之类的逐行函数,导致输出具有相同的列。我是 R 新手,所以不知道如何编写一个聪明的函数来做到这一点。我考虑过重塑数据,但也没有得到任何结果。任何和所有的帮助表示赞赏!
【问题讨论】:
-
试试 data.table。使用数字作为列名通常也不是好习惯
-
啊谢谢!找到了解决方案。此外,数字列名称是先前数据重塑的副作用,我认为它们不是好习惯,因为它们太麻烦了。我可能应该编辑问题并输入文本。
标签: r