r - 每列循环

标签 r loops multiple-columns

我的问题: 我在数据框中调用 data.frame(B) 有 68 列,每列有 12 个值(行)。

data.frame(B)
    1° column    2° column   3° colum
    1 1.65       1
    2 7.8        2
    3 1.2        3
    4 3.4
    5
    6
    7
    .....
    12

我有另一个 12 个值的数据框,调用 data.frame(A)。

data.frame(A)
    [1] -1.5683842 -1.6448055 -1.5663070 -0.7598736  0.9843939  1.6856689      
    [7] 2.0073107  1.8840261  1.0726286  0.2148070 -0.8835503       
    [12] -1.3923268

我需要计算 data.frame(A) 和 data.frame(B) 每列之间的相关性测试 (cor.test),如果可能的话使用循环方法。 结果应为 A 的 unic 列与 B 的各列之间的 Spearman 相关性值为 68。 谢谢

最佳答案

@CathG 指出最简单的解决方案如下:

cor(b, a) # Using the dataset below

以下解决方案并不像 CathG 建议的那么短,但它们的值(value)在于更灵活。

或者,我会按以下方式组合使用 applycor:

a = data.frame(matrix(runif(12*68), 12, 68))
b = runif(12)
cor_results = apply(a, 2, cor, y = b)
         X1          X2          X3          X4          X5          X6 
 0.31350412 -0.05467418 -0.30931157  0.14405810 -0.02345752 -0.12373525 
         X7          X8          X9         X10         X11         X12 
 0.01908565 -0.22919558  0.39268615  0.32430387  0.35093708 -0.22047010 
        X13         X14         X15         X16         X17         X18 
-0.39814052 -0.02533794 -0.03198359  0.58317791 -0.28128437  0.19024528 
        X19         X20         X21         X22         X23         X24 
-0.07923733  0.19769458  0.15992906 -0.11981105  0.26952069  0.21392988 
        X25         X26         X27         X28         X29         X30 
-0.40203609 -0.09928433 -0.10153816  0.04975818 -0.17193521  0.26193832 
        X31         X32         X33         X34         X35         X36 
 0.11082240 -0.26369909  0.37432923 -0.36222913 -0.19496623  0.37251599 
        X37         X38         X39         X40         X41         X42 
-0.27698393  0.26546843  0.13865907 -0.05896102  0.38421875  0.40201066 
        X43         X44         X45         X46         X47         X48 
-0.07955439 -0.23950890  0.20039167 -0.07278757  0.17397793 -0.34845780 
        X49         X50         X51         X52         X53         X54 
-0.13418043 -0.09117669  0.50658960 -0.01355937 -0.19616894  0.67096919 
        X55         X56         X57         X58         X59         X60 
 0.07128920 -0.30915734 -0.26373001 -0.20921997 -0.55908983 -0.27541652 
        X61         X62         X63         X64         X65         X66 
 0.30810248  0.06467311 -0.15531110 -0.02854304 -0.10019493 -0.23069442 
        X67         X68 
-0.63667406 -0.15019676 

其中 apply 调用中的 2 表示我们将该函数应用于每一列。稍微短一点的是使用 sapply (默认情况下迭代列):

sapply(a, cor, y = b) # Leads to the exact same result as above

缺点是它不能推广到 a 的任何维度。

或者更酷,使用dplyr:

a %>% summarise_each(funs(cor(x = ., y = b)))

关于r - 每列循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874007/

相关文章:

r - install.package期间出错: cannot read unreleased workspace version 3 written by experimental R 3. 5.0

html - 在列中均匀分布元素

css - 如何根据屏幕大小设置列数?

r - 用 R igraph 绘制多个图形

python - 在 R 与 Python 中 reshape 数据

r - pdf 设备和字体系列 "Arial"/或 : Change font name (not font) in PDF

java - JAVA 中未输入 Switch case

r - 循环并使用向量的值执行操作

python - 在 Python 中按特定日期列出 Outlook 电子邮件

awk - [SED/AWK]交换值