这是一个长期的问题,但是现在我真的可以解决这个难题了。我一直在使用dplyr,我认为总结变量很棒。但是,我试图显示仅部分成功的数据透视表。 Dplyr总是报告所有结果的一行,这很烦人。我必须将结果复制粘贴以擅长组织所有内容...
我收到了代码here 并且几乎可以正常工作。
使用此代码可获得相同的结果:
library(tidyverse)
set.seed(123)
ds <- data.frame(group=c("american", "canadian"),
iq=rnorm(n=50,mean=100,sd=15),
income=rnorm(n=50, mean=1500, sd=300),
math=rnorm(n=50, mean=5, sd=2))
ds %>%
group_by(group) %>%
summarise_at(vars(iq, income, math),funs(mean, sd)) %>%
t %>%
as.data.frame %>%
rownames_to_column %>%
separate(rowname, into = c("feature", "fun"), sep = "_")
为澄清起见,我已经tried this code,但点差仅适用于一个摘要(均值或sd等)。有些人使用collect(),但要使用group_by和collect()则很复杂。
感谢您的帮助。
答案 0 :(得分:2)
在t
步骤之后,而不是转置(summarise
)和更改类类型,而是执行gather
将其更改为'long'格式,然后进行spread
使用separate
和unite
library(tidyverse)
ds %>%
group_by(group) %>%
summarise_at(vars(iq, income, math),funs(mean, sd)) %>%
gather(key, val, iq_mean:math_sd) %>%
separate(key, into = c('key1', 'key2')) %>%
unite(group, group, key2) %>%
spread(group, val)