我制作了一个数据框,其中有一列包含日期和一列包含数值。我希望这个数据框按月进行分组,并汇总每个相应月份其他列中的所有数值。
这是我的数据框示例:
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
我已经尝试过一些代码:
df %>%
group_by(capture.date) %>%
summarise_each(funs(sum))
and:
aggregate(df[2:4], by=df["capture.date"], sum)
但这两个选项都返回按每日日期而不是月份进行汇总的数据框。如何使其按月而不是按日汇总?
期望的输出:
capture.date Test1 Test2 Test3
2016-03 3 3 3
2016-04 1 0 1
您可以将日期提取到%Y-%m
格式为group_by()
并使用summarise_if()
or summarise_at()
选择要求和的变量。
(确认capture.date
is Date
class)
df %>%
group_by(Date = strftime(capture.date, "%Y-%m")) %>%
summarise_if(is.numeric, sum)
# # A tibble: 2 x 4
# Date Test1 Test2 Test3
# <chr> <int> <int> <int>
# 1 2016-03 3 3 3
# 2 2016-04 1 0 1
Update!
范围动词 (_if
, _at
, _all
) 已被使用所取代pick()
or across()
在现有的动词中。
df %>%
group_by(Date = strftime(capture.date, "%Y-%m")) %>%
summarise(across(where(is.numeric), sum))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)