我有一个数据集,其中包括一些育龄及以上的女性。每个女性都指定了一个 id 和包含母亲年龄的数据集。对于每个女性,我们都是平等的。 Parity1 是女性的第一个孩子。胎次中的值指的是儿童的年龄。例如,id为1的女性 人口普查时,他今年 38 岁,第一个孩子 15 岁,第二个孩子 13 岁,第三个孩子 10 岁,第四个孩子 0 岁。
library("tidyverse")
sample_df<-
tibble(
id = c(1,2,3,4,5,6,7,8,9,10),
AGE= c(38, 39, 40, 41, 42, 43, 44, 45, 46, 47 ),
parity1 = c(15, 14, 13, 12, 9, 8, 14, 13, 3, 7 ),
parity2= c(13, 9, 9, 10, 7, 4, 13, 11, NA, 5 ),
parity3= c(10, 7, 3, 3, 6, 2, 9, 25, NA, 2),
parity4= c( 0, NA, NA, 1, NA, 0, 0 , 1, NA, NA),
)
长话短说,我想知道根据母亲的年龄,我的数据集中总共有多少个每个年龄段的孩子(孩子的年龄)。例如,根据母亲的年龄,我们有多少个0岁的孩子。最后,代码应该终止于一个表格,其中指定每个育龄妇女的 0、1、2、3、4、5... 岁的孩子数量。最终的输出应该是这样的:
母亲年龄 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
38 | 1 | |||
39 | ||||
40 | 1 | |||
41 | 1 | 1 | ||
42 | ||||
43 | 1 | 1 | 1 | |
44 | 1 | |||
45 | 1 | |||
46 | 1 | |||
47 | 1 |
看起来很残酷,但我非常感谢您提供的任何帮助。提前非常感谢您。
步骤:
sample_df |>
pivot_longer(starts_with("parity"), values_drop_na = TRUE) |>
pivot_wider(names_from = value, values_from = name, names_sort = TRUE, values_fn = length, values_fill = 0)
输出:
# A tibble: 10 × 19
id AGE `0` `1` `2` `3` `4` `5` `6` `7` `8` `9` `10`
<dbl> <dbl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 1 38 1 0 0 0 0 0 0 0 0 0 1
2 2 39 0 0 0 0 0 0 0 1 0 1 0
3 3 40 0 0 0 1 0 0 0 0 0 1 0
4 4 41 0 1 0 1 0 0 0 0 0 0 1
5 5 42 0 0 0 0 0 0 1 1 0 1 0
6 6 43 1 0 1 0 1 0 0 0 1 0 0
7 7 44 1 0 0 0 0 0 0 0 0 1 0
8 8 45 0 1 0 0 0 0 0 0 0 0 0
9 9 46 0 0 0 1 0 0 0 0 0 0 0
10 10 47 0 0 1 0 0 1 0 1 0 0 0
# ℹ 6 more variables: `11` <int>, `12` <int>, `13` <int>, `14` <int>,
# `15` <int>, `25` <int>