我制作了一个数据框,其中有一列包含日期和一列包含数值。我希望这个数据框按月进行分组,并汇总每个相应月份其他列中的所有数值。
这是我的数据框示例:
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)
您可以将日期提取为%Y-%m格式group_by()并使用summarise_if()或summarise_at()来选择对哪些变量进行求和。
(确认是capture.date班级Date)
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\nRun Code Online (Sandbox Code Playgroud)\n作用域动词(\xe2\x81\xa0_if\xe2\x81\xa0、\xe2\x81\xa0_at\xe2\x81\xa0、 \xe2\x81\xa0)已被现有动词中\xe2\x81\xa0_all使用pick()或取代。across()
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\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |