r - R:每月汇总行数
问题描述
我制作了一个数据框,其中有一列包含日期,列包含数值。我希望这个数据框按月对自身进行分组,并对每个相应月的其他列中的所有数值进行汇总。
这是我的数据框示例:
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))
和:
aggregate(df[2:4], by=df["capture.date"], sum)
但是这两个选项都返回按日而不是按月汇总的数据框。我怎样才能让它按月而不是按天汇总?
所需的输出:
capture.date Test1 Test2 Test3
2016-03 3 3 3
2016-04 1 0 1
解决方案
以下应该工作
library(lubridate)
library(tidyverse)
txt <- "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"
data <- read.table(text = txt, header = TRUE)
data %>%
mutate(month = month(capture.date),
year = year(capture.date)) %>%
group_by(month, year) %>%
summarise_if(is.integer, sum) %>%
ungroup %>%
mutate("capture.date" = paste(year, str_pad(month, 2, side = "left", pad = "0"), sep = "-")) %>%
select(capture.date, Test1, Test2, Test3)
这将产生
# A tibble: 2 x 4
capture.date Test1 Test2 Test3
<chr> <int> <int> <int>
1 2016-03 3 3 3
2 2016-04 1 0 1
您可能需要将功能更改summarise_if
为其他内容,而不是is.integer
您的真实数据。
推荐阅读
- ios - 下载数据期间集合视图中的图像发生变化
- postgresql - PostGIS 表索引
- javascript - 我们可以在 MSAL JS 中使用响应类型作为访问令牌进行身份验证吗
- javascript - Ionic 3 未定义但不是未定义
- asp.net-core - 使用 xUnit 测试依赖注入范围“一致性”
- css - 用css重排多行多列
- python - 如何解决 Int 对象不可下标错误
- apache-kafka - KTable 未触发
- docker - 如何使用“webdis docker image”向主机公开 redis-server 端口
- c# - 全局设置最大鼠标位置,而不仅仅是在 wpf 窗口上