我有这样的数据:
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
答案 0 :(得分: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