gpt4 book ai didi

r - 如何在单个命令中组合两个不同的 dplyr 摘要

转载 作者:行者123 更新时间:2023-12-01 10:29:29 29 4
gpt4 key购买 nike

我正在尝试创建一个分组摘要,报告每个组中的记录数,然后还显示一系列变量的均值。

我只能弄清楚如何将其作为两个单独的摘要进行处理,然后再将它们合并在一起。这工作正常,但我想知道是否有更优雅的方法来做到这一点?

dailyn<-daily %>% # this summarises n
group_by(type) %>%
summarise(n=n()) %>%

dailymeans <- daily %>% # this summarises the means
group_by(type) %>%
summarise_at(vars(starts_with("d.")),funs(mean(., na.rm = TRUE))) %>%

dailysummary<-inner_join(dailyn,dailymeans) #this joins the two parts together

我正在处理的数据是这样的数据框:
daily<-data.frame(type=c("A","A","B","C","C","C"),
d.happy=c(1,5,3,7,2,4),
d.sad=c(5,3,6,3,1,2))

最佳答案

您可以在一次调用中完成此操作,通过分组、使用 mutate 而不是汇总,然后使用 slice() 保留每种类型的第一行:

daily %>% group_by(type) %>% 
mutate(n = n()) %>%
mutate_at(vars(starts_with("d.")),funs(mean(., na.rm = TRUE))) %>%
slice(1L)

编辑:在这个修改后的例子中,它的工作原理可能更清楚
daily_summary <- daily %>% group_by(type) %>% 
mutate(n = n()) %>%
mutate_at(vars(starts_with("d.")),funs("mean" = mean(., na.rm = TRUE)))

daily_summary
# Source: local data frame [6 x 6]
# Groups: type [3]
#
# # A tibble: 6 x 6
# type d.happy d.sad n d.happy_mean d.sad_mean
# <fctr> <dbl> <dbl> <int> <dbl> <dbl>
#1 A 1 5 2 3.000000 4
#2 A 5 3 2 3.000000 4
#3 B 3 6 1 3.000000 6
#4 C 7 3 3 4.333333 2
#5 C 2 1 3 4.333333 2
#6 C 4 2 3 4.333333 2

daily_summary %>%
slice(1L)

# Source: local data frame [3 x 6]
# Groups: type [3]
#
# # A tibble: 3 x 6
# type d.happy d.sad n d.happy_mean d.sad_mean
# <fctr> <dbl> <dbl> <int> <dbl> <dbl>
#1 A 1 5 2 3.000000 4
#2 B 3 6 1 3.000000 6
#3 C 7 3 3 4.333333 2

关于r - 如何在单个命令中组合两个不同的 dplyr 摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239993/

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