gpt4 book ai didi

r - Dplyr summarise_each 汇总结果

转载 作者:行者123 更新时间:2023-12-04 11:30:40 25 4
gpt4 key购买 nike

我有一个这样的数据框:

    metric1    metric2    metric3 field1 field2
1 1.07809668 4.2569882 7.1710095 L S1
2 0.56174763 1.2660273 -0.3751915 L S2
3 1.17447327 5.5186679 11.6868322 L S2
4 0.32830724 -0.8374830 1.8973718 S S2
5 -0.51213503 -0.3076640 10.0730274 S S1
6 0.24133119 2.7984703 15.9622215 S S1
7 1.96664414 0.1818531 2.7416768 S S3
8 0.06669409 3.8652075 10.5066330 S S3
9 1.14660437 8.5703119 3.4294062 L S4
10 -0.72785683 9.3320762 1.3827989 L S4

我正在展示 2 个字段,但还有更多。我需要对按每个字段分组的指标求和,例如对于字段 1:
DF %>% group_by(field1) %>% summarise_each(funs(sum),metric1,metric2,metric3)

我可以对列为 sum(metric1)、sum(metric2)、sum(metric3) 的每个字段执行此操作,但我需要的表输出是这样的:
L(field1) S(field1) S1(field2)  S2(field2) S3(field2)  S4(field2)
sum(metric1)

sum(metric2)

sum(metric3)

我相信必须有一种方法可以使用 tidyr 和 dplyr 来做到这一点,但无法弄清楚

最佳答案

试试 recast来自 reshape2包裹

library(reshape2)
recast(DF, variable ~ field1 + field2, sum)
# variable L_S1 L_S2 L_S4 S_S1 S_S2 S_S3
# 1 metric1 1.078097 1.736221 0.4187475 -0.2708038 0.3283072 2.033338
# 2 metric2 4.256988 6.784695 17.9023881 2.4908063 -0.8374830 4.047061
# 3 metric3 7.171010 11.311641 4.8122051 26.0352489 1.8973718 13.248310

这与
dcast(melt(DF, c("field1", "field2")), variable ~ field1 + field2, sum)

您也可以将其与 tidyr::gather 结合使用如果你愿意,但你不能使用 tidyr::spread因为它没有 fun.aggregate争论
DF %>%
gather(variable, value, -(field1:field2)) %>%
dcast(variable ~ field1 + field2, sum)
# variable L_S1 L_S2 L_S4 S_S1 S_S2 S_S3
# 1 metric1 1.078097 1.736221 0.4187475 -0.2708038 0.3283072 2.033338
# 2 metric2 4.256988 6.784695 17.9023881 2.4908063 -0.8374830 4.047061
# 3 metric3 7.171010 11.311641 4.8122051 26.0352489 1.8973718 13.248310

关于r - Dplyr summarise_each 汇总结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29759455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com