有点令人费解,所以我将从基本概念开始。数据是按地区和规模划分的就业人数。从那里,我产生了一个数据框架,其中包含大小类、面积、按大小类划分的总就业人数、按大小分类划分的工作站点数量。规模越大,就业人数越多。1等于使用0到4.9之间的值。9等于使用1000+。显然,有些地区没有大的雇主。但是,我需要最终结果总是有9行每个区域,即使没有就业的大小类。示例数据如下所示。
area <- c(01,01,01,01,01,01,01,03,03,03,03)
employment <- c(1,5,9,10,11,12,67,100,4,444,149)
sizeclass <- c(1,2,2,3,3,3,5,6,1,7,6)
df2 <- data.frame(area,employment,sizeclass)这是我正在使用的代码,当它工作时,它不会为区域01中的sizeclass 4产生结果。即使没有要求和或计数的内容,我如何让它按大小类求和?
sizeclassreport <- df2 %>%
select (area,employment,sizeclass) %>%
group_by(area,sizeclass) %>%
summarise(employment = sum(employment),worksites = n())期望的结果将是18行的长度,以及每个大小类的就业总和和工作站点的数量,即使没有就业。
发布于 2021-03-10 04:36:13
我们可以使用complete从'sizeclass‘的自定义值范围中获取1到9之间的所有值。默认情况下,其他列值将由NA填充。如果需要,可以使用自定义值对其进行fill,例如0
library(dplyr)
library(tidyr)
sizeclassreport %>%
group_by(area) %>%
complete(sizeclass = 1:9,
fill = list(employment = 0, worksites = 0)) %>%
ungroup-output
# A tibble: 18 x 4
area sizeclass employment worksites
<dbl> <dbl> <dbl> <dbl>
1 1 1 1 1
2 1 2 14 2
3 1 3 33 3
4 1 4 0 0
5 1 5 67 1
6 1 6 0 0
7 1 7 0 0
8 1 8 0 0
9 1 9 0 0
10 3 1 4 1
11 3 2 0 0
12 3 3 0 0
13 3 4 0 0
14 3 5 0 0
15 3 6 249 2
16 3 7 444 1
17 3 8 0 0
18 3 9 0 0https://stackoverflow.com/questions/66554401
复制相似问题