R:每月汇总行数

Kak*_*oen 5 aggregate r dplyr

我制作了一个数据框,其中有一列包含日期和一列包含数值。我希望这个数据框按月进行分组,并汇总每个相应月份其他列中的所有数值。

这是我的数据框示例:

capture.date  Test1  Test2  Test3
2016-03-18      0      1      1
2016-03-18      1      1      1
2016-03-20      2      1      1
2016-04-12      1      0      1
Run Code Online (Sandbox Code Playgroud)

我已经尝试过一些代码:

df %>% 
  group_by(capture.date) %>% 
  summarise_each(funs(sum))
Run Code Online (Sandbox Code Playgroud)

和:

aggregate(df[2:4], by=df["capture.date"], sum)
Run Code Online (Sandbox Code Playgroud)

但这两个选项都返回按每日日期而不是月份进行汇总的数据框。如何使其按月而不是按日汇总?

期望的输出:

capture.date  Test1  Test2  Test3
2016-03         3      3      3     
2016-04         1      0      1
Run Code Online (Sandbox Code Playgroud)

Dar*_*sai 4

您可以将日期提取为%Y-%m格式group_by()并使用summarise_if()summarise_at()来选择对哪些变量进行求和。

\n

(确认是capture.date班级Date

\n
df %>%\n  group_by(Date = strftime(capture.date, "%Y-%m")) %>%\n  summarise_if(is.numeric, sum)\n\n# # A tibble: 2 x 4\n#   Date    Test1 Test2 Test3\n#   <chr>   <int> <int> <int>\n# 1 2016-03     3     3     3\n# 2 2016-04     1     0     1\n
Run Code Online (Sandbox Code Playgroud)\n
\n

更新!

\n

作用域动词(\xe2\x81\xa0_if\xe2\x81\xa0、\xe2\x81\xa0_at\xe2\x81\xa0、 \xe2\x81\xa0)已被现有动词中\xe2\x81\xa0_all使用pick()或取代。across()

\n
df %>%\n  group_by(Date = strftime(capture.date, "%Y-%m")) %>%\n  summarise_if(is.numeric, sum)\n\n# # A tibble: 2 x 4\n#   Date    Test1 Test2 Test3\n#   <chr>   <int> <int> <int>\n# 1 2016-03     3     3     3\n# 2 2016-04     1     0     1\n
Run Code Online (Sandbox Code Playgroud)\n