我有一个包含人口信息的数据集。在我的原始数据集中,每一行都是一个人,每一列都是一个变量:
CBSWIJKCD
)CBSBUURTCD
)Leeftijd_5jr
)mutdat
)我想汇总这些数据,以便每一行代表一个地区或邻里,而各列则代表:
SoortRegio
)
Naam
)TotaalInwoners
)0-4
,5-9
等)中的总人数mutdat
),并且在各列中每个年龄类别的居民总数和总人数。请参阅下面的示例。
我遇到的问题是,当我收集地区/邻里列时,我的行不再代表每个人,因此在dplyr语句中使用n()
进行计数是没有意义的。
原始数据示例:
CBSWIJKCD mutdat CBSBRTCD Leeftijd_5jr
<chr> <date> <chr> <chr>
1 Graft-De Rijp 2018-01-01 De Rijp 0-4
2 Graft-De Rijp 2018-01-01 De Rijp 0-4
3 Graft-De Rijp 2018-01-01 De Rijp 0-4
4 Graft-De Rijp 2018-01-01 De Rijp 0-4
5 Graft-De Rijp 2018-01-01 De Rijp 0-4
6 Graft-De Rijp 2018-01-01 De Rijp 0-4
7 Graft-De Rijp 2018-01-01 De Rijp 0-4
8 Graft-De Rijp 2018-01-01 De Rijp 0-4
9 Graft-De Rijp 2018-01-01 De Rijp 0-4
10 Graft-De Rijp 2018-01-01 De Rijp 0-4
所需数据的外观:
# A tibble: 76 x 26
mutdat SoortRegio Naam InwonerAantal `0-4` `10-14` `104+` `15-19` `20-24` `25-29` `30-34` `35-39` `40-44`
<date> <chr> <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 2018-01-01 CBSWIJKCD Graft-De Rijp 1426 83 88 NA 84 58 68 78 95 111
2 2018-01-01 CBSBRTCD De Rijp 2022 107 102 NA 92 71 75 76 120 137
3 2018-01-01 CBSBRTCD Schermer 1431 85 93 NA 99 98 74 73 83 92
4 2018-01-01 CBSBRTCD Bergermeer 49 2 4 NA 4 2 1 3 2 5
5 2018-01-01 CBSBRTCD Boekelemeer 2963 117 91 NA 100 192 388 277 225 196
DPUT我正在处理的数据样本
structure(list(CBSWIJKCD = c("West", "Graft-De Rijp", "Daalmeer/Koedijk",
"Zuid", "Daalmeer/Koedijk", "Graft-De Rijp", "Oudorp", "De Mare",
"Oudorp", "Centrum", "Schermer", "De Mare", "Zuid", "Centrum",
"Overdie", "West", "Oudorp", "De Mare", "West", "West"), CBSBRTCD = c("De Hoef I en II",
"De Rijp", "Daalmeer-Noordwest", "Bloemwijk en Zocherkwartier",
"Daalmeer-Zuidwest", "De Rijp", "Oudorperpolder-Zuid", "De Mare",
"Oudorperpolder-Midden", "Spoorbuurt", "Schermerhorn", "t Rak-Noord",
"Kooimeer", "Binnenstad-Oost", "Oud-Overdie", "De Hoef III en IV",
"Oudorperpolder-Midden", "De Horn-Noord", "De Hoef III en IV",
"Bergermeer"), Leeftijd_5jr = c("30-34", "10-14", "30-34", "45-49",
"60-64", "75-79", "70-74", "85-89", "65-69", "70-74", "50-54",
"60-64", "35-39", "40-44", "20-24", "10-14", "15-19", "70-74",
"65-69", "15-19"), mutdat = structure(c(17532, 17532, 17532,
17532, 17532, 17532, 17532, 17532, 17532, 17532, 17532, 17532,
17532, 17532, 17532, 17532, 17532, 17532, 17532, 17532), class = "Date")), row.names = c(NA,
-20L), class = c("tbl_df", "tbl", "data.frame"))
我已经尝试过:
library(tidyverse)
df3 <- df2 %>%
gather(key = "SoortRegio", value = "Naam", CBSWIJKCD:CBSBRTCD, -mutdat, -Leeftijd_5jr) %>%
group_by(Naam) %>%
mutate(InwonerAantal = n()) %>%
ungroup()
df4 <- df3 %>%
group_by(SoortRegio, Naam, Leeftijd_5jr) %>%
mutate(aantal = n()) %>%
ungroup() %>%
unique() %>%
spread(Leeftijd_5jr, aantal)
但是,当对CBSWIJKCD进行过滤并计算数量时(我应该以108475人结束),我得到110951。