R中的聚合函数用于创建时间序列数据



我正在处理一个包含35个变量的数据集。我推导了年龄伪变量类别,将患者的年龄分为不同的年龄组。现在,我想根据日期和地点变量,汇总每个年龄组的病例总数和病例数。以下是我尝试过的代码,但我没有得到每个年龄组病例值的总和。例如,如果总共有10个病例,那么这10个病例应该被分为不同的年龄组,但NA正在出现。在某些情况下,少数年龄组中没有出现1或2例病例,这并不代表总病例数。

df_sa2 <- aggregate( cbind(cases=df_sa1$cases, agecat1=df_sa1$agecat1, agecat2=df_sa1$agecat2, agecat3=df_sa1$agecat3, agecat4=df_sa1$agecat4, agecat5=df_sa1$agecat5), by = list(Date=df_sa1$date, location=df_sa1$location), FUN = sum)

我已经检查了数据类型,它们都是数字。

请说明代码出了什么问题。非常感谢。

考虑aggregate的公式样式,它可以更好地阅读,并使用data参数来避免使用大量的df_sa1$限定符。

使用公式样式,数值列放置在~的左侧,分类变量放置在右侧,用于对列进行分组。这样做也使得CCD_ 5和CCD_。

fml <- cases ~ date + location + agecat1 + agecat2 + agecat3 + agecat4 + agecat5
df_sa2 <- aggregate(fml, data=df_sa1, FUN=sum)
# TO ACCOUNT FOR POTENTIAL MISSING VALUES IN df_sa1$cases
df_sa2 <- aggregate(fml, data=df_sa1, FUN=function(x) sum(x, na.rm=TRUE), na.action=na.pass) 

如果您需要单独的年龄类别分组,请相应地调整公式:

fml <- cases ~ date + location + agecat1
fml <- cases ~ date + location + agecat2
...
fml <- cases ~ date + location + agecat5

最新更新