我有一个大型数据集,其中包含医院,医院组的名称,以及按月分列的患者数量。我正在尝试使用dplyr创建一个摘要,其中包含每个月由医院组汇总的患者总数。数据框如下所示:
Hospital | Hospital_group | Jan 03 | Feb 03 | Mar 03 | Apr 03 | .....
---------------------------------------------------------------
Hosp 1 | Group A | 5 | 5 | 6 | 4 | .....
---------------------------------------------------------------
Hosp 2 | Group A | 6 | 3 | 8 | 2 | .....
---------------------------------------------------------------
Hosp 3 | Group B | 5 | 5 | 6 | 4 | .....
---------------------------------------------------------------
Hosp 4 | Group B | 3 | 7 | 2 | 1 | .....
---------------------------------------------------------------
我正在尝试创建一个如下所示的新数据框:
Hospital_group |Jan 03 | Feb 03 | Mar 03 | Apr 03 | .....
----------------------------------------------------------
Group A | 11 | 8 | 14 | 6 | .....
----------------------------------------------------------
Group B | 8 | 12 | 8 | 5 | .....
----------------------------------------------------------
我正在尝试使用dplyr来汇总数据但是有点卡住(我可能已经猜到了,这是非常新的)。我已经设法过滤了第一列(医院名称)和group_by医院组,但我不知道如何获得每个月和每年的累计总和(有大量的日期列,所以我希望那里这是一种快速简便的方法)。
很抱歉发布这样一个基本问题 - 非常感谢任何帮助或建议。
Greg
答案 0 :(得分:3)
使用summarize_all
:
例如:
df <- tibble(name=c("a","b", "a","b"), colA = c(1,2,3,4), colB=c(5,6,7,8))
df
# A tibble: 4 × 3
name colA colB
<chr> <dbl> <dbl>
1 a 1 5
2 b 2 6
3 a 3 7
4 b 4 8
df %>% group_by(name) %>% summarize_all(sum)
结果:
# A tibble: 2 × 3
name colA colB
<chr> <dbl> <dbl>
1 a 4 12
2 b 6 14
编辑:在您的情况下,您的数据框包含一个您不想聚合的列(医院名称。)您可能必须先取消选择医院名称列,或使用summarize_at(vars(-Hospital), funs(sum))
而不是{ {1}}。
答案 1 :(得分:0)
我们可以使用base R
我们按split
Hospital_group
数据框,然后按列sum
进行do.call(rbind, lapply(split(df[-c(1, 2)], df$Hospital_group), colSums))
# Jan_03 Feb_03 Mar_03 Apr_03
#Group_A 11 8 14 6
#Group_B 8 12 8 5
。
rake db:migrate VERSION=0