关联R中的数据子集

时间:2018-01-04 01:29:15

标签: r correlation

我有这样的数据:

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&针对DepVar列的Var2,用于组内的所有观察。所以我的输出结构将是这样的(相关性组成):

Group | Var1 | Var2
  a   |  0.6 |  0.2
  b   |  0.3 |  0.1
  c   |  0.4 |  0.4

1 个答案:

答案 0 :(得分:1)

我们可以使用dplyrGroup对数据进行分组,并按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