【发布时间】:2023-03-13 00:52:01
【问题描述】:
我知道 这是一个非常简单的问题,我一直在寻找答案 here 和 here 试图针对我当前的问题调整代码,但我没有成功。 因此,有几次,我们需要按多个组显示包含平均值和标准差(以及其他信息)的表格。这是一个非常常见的分析,但是当我们决定使用 tidyverse 来运行它时,有时代码变得难以处理。
我知道这段代码非常接近我想要的
all_fpc %>%
group_by(arm, Time) %>%
summarise_at(vars(sum_fpc), funs(mean, sd)) %>%
gather(key, val, mean:sd) %>%
separate(key, into = c('key1', 'key2')) %>%
print(n=nrow(.))
但我在这里堆积如山。
要重现此数据集,请尝试以下操作:
ds <- data.frame(arm=c("Group 1","Group 2","Group 3", "Group 4"),
Time = c("First","Second","Third"),
result = rnorm(n = 120,mean=10,sd=2))
ds %>%
group_by(arm, Time) %>%
summarise_at(vars(result), funs(mean, sd)) %>%
gather(key, val, mean:sd) %>%
print(n=nrow(.))
第二个问题:任何人都知道任何可以以更简单的方式创建数据透视表的包(基于 tidyverse)?
已编辑:一如既往,感谢所有建议!这个问题的答案如下。
【问题讨论】:
-
你需要
ds %>% group_by(arm, Time) %>% mutate(rn = row_number()) %>% spread(Time, result) -
您使用的是
separate而不是spread。 -
我总是觉得
gather和spread令人困惑,这就是你要找的东西,使用reshape2:ds %>% reshape2::dcast(arm+Time ~ key, value="val") -
@akrun 一如既往的感谢。我正在重温你给我的一些旧代码,我快到了。您能否解释一下如何在没有外部软件包的情况下重现此输出?库(ezsummary)`ds %>% 选择(臂,时间,结果)%>% group_by(臂,时间)%>% ezsummary(数字 = 1)`
-
对于旋转,请尝试
rpivotTable。它丑陋但实用且用途广泛。