关联R中的数据子集

问题描述 投票:0回答:1

我有这样的数据:

DepVar = c(2,3,5,6,1,3)
Var1 = c(1,7,2,1,1,2)
Var2 = c(0,8,3,3,4,6)    
Group = c("a", "c", "c","b","a","a") 
df = data.frame(Group, DepVar, Var1, Var2) 

对于组内的所有观察,我想将Var1和Var2与DepVar列相关联。所以我的输出将是这样的结构(相关性组成):

Group | Var1 | Var2
  a   |  0.6 |  0.2
  b   |  0.3 |  0.1
  c   |  0.4 |  0.4
r correlation
1个回答
1
投票

我们可以使用dplyr通过Group对数据进行分组,并通过cor对数据集进行汇总。因为在您的示例数据集b中只有一个观察值,相关系数是NA

library(dplyr)

df2 <- df %>%
  group_by(Group) %>%
  summarise(Var1 = cor(DepVar, Var1),
            Var2 = cor(DepVar, Var2)) %>%
  as.data.frame()
df2
#   Group       Var1       Var2
# 1     a  0.8660254  0.3273268
# 2     b         NA         NA
# 3     c -1.0000000 -1.0000000

如果您有许多列基于DepVar进行相同的关联,我们可以使用summarise_at而不是summarise

df2 <- df %>%
  group_by(Group) %>%
  summarise_at(vars(-DepVar), funs(cor(DepVar, .))) %>%
  as.data.frame()
df2
#   Group       Var1       Var2
# 1     a  0.8660254  0.3273268
# 2     b         NA         NA
# 3     c -1.0000000 -1.0000000
© www.soinside.com 2019 - 2024. All rights reserved.