【发布时间】:2021-05-17 22:27:01
【问题描述】:
我想知道将summarise() 函数的输出转换为我想要的 3 个矩阵的最短方法是什么?
z <- "group y1 y2
1 1 2 3
2 1 3 4
3 1 5 4
4 1 2 5
5 2 4 8
6 2 5 6
7 2 6 7
8 3 7 6
9 3 8 7
10 3 10 8
11 3 9 5
12 3 7 6"
dat <- read.table(text = z, header = T)
dat %>%
group_by(group) %>%
summarise(cov = cov(y1, y2) * (n() - 1),
across(c(y1, y2), ~ var(.) * (n() - 1)))
# group DV1 DV2 cov
#1 1 6 2 0
#2 2 2 2 -1
#3 3 6.8 5.2 2.6
期望的输出:
group1 = matrix(c(6,0,0,2),2)
group2 = matrix(c(2,-1,-1,2),2)
group3 = matrix(c(6.8,2.6,2.6,5.2),2)
【问题讨论】:
标签: r dataframe matrix dplyr tidyverse