[英]R tidyverse - How can I create an age group from an excisting age group
[英]How can I get the number of units in an age group over a time period?
我正在嘗試找到一種有效的方式來獲取一段時間內按年齡划分的總人口。 我有生日,開始日期和結束日期(因為在程序中):
people <- data.frame(start_date = as.Date(c("2005-01-01", "2005-01-01", "2006-01-01"),
end_date = as.Date(c(NA, NA, "2008-01-01"),
bday = as.Date(c("1983-01-01", "1985-01-01", "1986-01-01")))
最后,我想說一下顯示2005年至2015年21歲,22歲,23歲等年齡段的人數。 換句話說,在該時間間隔內處於某個年齡段的人數。 在此示例中:
AGE COUNT
20 2
21 2
22 2
23 3
24 2
25 2
要增加一點麻煩,我正在使用dbplyr處理sql數據庫,因此我正在尋找dbplyr或sql解決方案。 這里大約有三千萬人,所以繁重的工作必須那樣做。
這類似於此問題,但不完全相同,並且不是數據庫友好的。
對於任何對此迷迷糊糊的人,這就是我的做法(不一定很好):
首先,以月為單位,為每個人找到一個“最小”和“最大”:
DATEDIFF(m, start_date, bday)
DATEDIFF(m, end_date, bday)
然后使用dbplyr將其拖入R中,並收集到“ mydata”中。 最后,在18到100歲之間的所有月份中使用:
month_list <- as.list(216:1200)
all <- lapply(month_list, function(x) {
mydata %>%
mutate(in_range = ifelse(x >= abs(minage) & x <= abs(maxage),1,0))%>%
summarise(count = sum(in_range, na.rm=T)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.