gpt4 book ai didi

R:每月汇总行数

转载 作者:行者123 更新时间:2023-12-04 10:09:22 24 4
gpt4 key购买 nike

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

这是我的数据框示例:

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 以外的其他函数。

关于R:每月汇总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58680287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com