我已经下载了数据框架casos_hosp_uci_def_sexo_edad_provres_60_mas.csv
,该数据框架描述了西班牙根据省份、年龄、性别分类的新冠肺炎感染人数。。。来自此网页。我读取数据帧并将其表示为:
db<-read.csv(file = 'casos_hosp_uci_def_sexo_edad_provres.csv')
前五行显示
provincia_iso sexo grupo_edad fecha num_casos num_hosp num_uci num_def
1 A H 0-9 2020-01-01 0 0 0 0
2 A H 10-19 2020-01-01 0 0 0 0
3 A H 20-29 2020-01-01 0 0 0 0
4 A H 30-39 2020-01-01 0 0 0 0
5 A H 40-49 2020-01-01 0 0 0 0
数据框的前四列显示了省份名称、人员性别、年龄组和日期,最新的四列显示了生病、住院、在重症监护室或死亡的人数。
我想用R来找出传染率最高的一天。为此,我必须对列fecha
的每个不同值的第五行num_casos
的元素求和。
我已经能够计算出患病男性的数量为hombresEnfermos=sum(db[which(db$sexo=="H"), 5])
。然而,我认为必须有一种更好的方法来检查传染率较高的天数,而不是手动计数。然而,我不知道是怎么回事。
有人能帮帮我吗?
使用dplyr
按日期获取总数:
library(dplyr)
db %>% group_by(fecha) %>% summarise(total = sum(num_casos))
基础R中的两个备选方案:
data.frame(fecha = sort(unique(db$fecha)),
total = sapply(split(db, f = db$fecha), function(x) {sum(x[['num_casos']])}))
或者更简单地说,
aggregate(db$num_casos, list(db$fecha), FUN=sum)
data.table
中的一种替代方案:
library(data.table)
db <- as.data.table(db)
db[, list(total=sum(num_casos)), by = fecha]