嘿,我有一个由两列组成的数据框架:日期和 case :

 date            cases
2021-05-01          2
2022-03-01          3
2021-05-21          8

我想要的是计算每年每个月每个病例的总数.

 total_cases <- aggregate(cbind(cases)~month(date),
         data=datalab,FUN=sum)

但它不是按年份分开的.它计算每个月的总病例数,但将2021 5月和2022年5月合并在一起,我想分别计算.

推荐答案

使用months(注意s)和strftime.

with(datalab, aggregate(datalab['cases'], list(month=months(date), year=strftime(date, '%Y')), FUN=sum))
#   month year cases
# 1   May 2021    10
# 2 March 2022     3

You could also use the 1st to 7th substring.

aggregate(datalab['cases'], list(month=substr(datalab$date, 1, 7)), FUN=sum)
#     month cases
# 1 2021-05    10
# 2 2022-03     3

或者,更简洁,尽管没有那么好.

aggregate(cases ~ substr(date, 1, 7), data=datalab, FUN=sum)
#   substr(date, 1, 7) cases
# 1            2021-05    10
# 2            2022-03     3

使现代化

要按国家进行汇总,只需将其放在第二个(即by=个)列表中;它被with引用.

with(datalab2, aggregate(datalab2['cases'], list(month=months(date), year=strftime(date, '%Y'),
                                                 country=country), FUN=sum))
#   month year country cases
# 1   May 2021       A    15
# 2 March 2022       A     5
# 3   May 2021       B    16
# 4 March 2022       B     6
# 5   May 2021       C    12
# 6 March 2022       C     5

Data:

datalab <- structure(list(date = c("2021-05-01", "2022-03-01", "2021-05-21"
), cases = c(2L, 3L, 8L)), class = "data.frame", row.names = c(NA, 
-3L))

datalab <- transform(datalab, date=as.Date(date))

datalab2 <- structure(list(date = structure(c(18748, 19052, 18768, 18748, 
19052, 18768, 18748, 19052, 18768), class = "Date"), country = structure(c(1L, 
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), levels = c("A", "B", "C"), class = "factor"), 
    cases = c(7L, 5L, 8L, 9L, 6L, 7L, 2L, 5L, 10L)), class = "data.frame", row.names = c(NA, 
-9L))

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

混淆矩阵,其中每列和等于1

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

管道末端运行功能

在R中查找每个组不同时间段的总天数

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

带有叠加饼图系列的Highmap

如何从当前行上方找到符合特定条件的最接近值?

迭代通过1个长度的字符串长字符R

将数据集中的值增加到当前包含的最大值

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

使用R闪光显示所有数据点作为默认设置

如何提取所有完美匹配的10个核苷酸在一个成对的匹配与生物字符串在R?>

在ggplot2的框图中绘制所有级别的系数

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

多元正态分布的计算

有毒元素与表观遗传年龄的回归模型

如果满足条件,则替换列的前一个值和后续值

如何修改GT表中组名行的 colored颜色 ?

使用其他DF中的文件名将列表中的每个元素保存到文件中