在R中查找数据帧中元素数的问题



我已经下载了数据框架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]

最新更新