【问题标题】:pairs.panels function in R for specific correlations of columns in dataframeR中的pairs.panels函数用于数据框中列的特定相关性
【发布时间】:2020-05-01 06:02:15
【问题描述】:

我有一个非常大的数据集,并试图找出许多不同(和随机)数据组合之间的相关性。例如,我可能想要第 3 列与第 12-15 列之间的相关性,或者第 20 列与第 1-4 列之间的相关性等...

我目前正在使用 psych 库中的pairs.panels() 函数,但无法确定我想要的特定列配对。

【问题讨论】:

    标签: r correlation psych


    【解决方案1】:

    这里是 df,一个虚拟的 data.frame,有 26 列,每列都包含随机值,因此任何一对列的相关性都应该相当低。

    cols = lapply(1:26, function(dummy) runif(30))
    df = do.call(data.frame, cols)
    names(df) = LETTERS
    

    如果您想要列“X”与列“A”、“C”和“E”之间的相关性,请尝试使用 sapplycor 函数。

    sapply(df[c("A","C","E")], cor, df["X"])
    

    或者使用列号:

    sapply(df[c(1,3,5)], cor, df[24])
    

    如果您想要两组列之间相关性的所有置换组合,请尝试:

    firstGroup <- c(1,3,5,20)
    secondGroup <- c(14,20,25)
    combos <- expand.grid(firstGroup, secondGroup)
    result <- mapply(cor, df[combos$Var1], df[combos$Var2])
    resultAsMatrix <- matrix(result, nrow = length(firstGroup), dimnames = list(firstGroup, secondGroup))
    

    获得:

    > resultAsMatrix
                14         20          25
    1  -0.22949844 -0.1527876 -0.11877405
    3   0.23174965  0.0311125  0.33570756
    5   0.01491815 -0.1263007 -0.16688800
    20  0.18007802  1.0000000  0.04638838
    

    编辑:

    @user20650 指出cor 函数可以比较内置的两个矩阵。所以:

    cor(df[firstGroup], df[secondGroup])
    

    产生我在上面手动创建的矩阵:

                N          T           Y
    A -0.22949844 -0.1527876 -0.11877405
    C  0.23174965  0.0311125  0.33570756
    E  0.01491815 -0.1263007 -0.16688800
    T  0.18007802  1.0000000  0.04638838
    

    【讨论】:

    • 太棒了,正是我想要的。感谢您的帮助。
    • @user20650,是的——一个更优雅的解决方案。感谢那!我会更新我的答案。
    猜你喜欢
    • 2023-03-17
    • 2019-10-15
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多