我有一个数据集,其中包括一些育龄及以上的女性.每个使用ID和数据集指定的女性都包括母亲的年龄.对于每一位女性,我们都是平等的.生育第一胎是女性生育的第一个子元素.平等值指的是子元素的年龄.例如,一个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岁的子元素的数量……有待具体说明.最终的输出应该是这样的:

AGE of mother 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

看起来很残忍,但我再次感谢你能提供的任何帮助.提前谢谢你了.

推荐答案

步骤:

  1. 使数据变长,丢弃NA值
  2. 使数据变宽,对新列进行排序,获取它们的长度(即1),然后将所有Nas替换为零
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>

R相关问答推荐

Facet_wrap具有不同bin宽度值的图表

图片中令人惊讶的行为

按自定义数字模式对变量名称排序

我可以截断10字节的扩展数并转换为8字节的double吗?

如何将y轴上的线定位得彼此更近

高质量地将R格式的图表从Word中输出

从R中的另一个包扩展S3类的正确方法是什么

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

在R底座中更改白天和夜晚的背景 colored颜色

R等效于LABpascal(n,1)不同的列符号

任意列的欧几里得距离

在使用ggroove后,将图例合并在gplot中

在特定Quarto(reveal.js)幻灯片上隐藏徽标

在ggplot2中更改小提琴情节的顺序

合并后返回列表的数据帧列表

如何在PackageStatus()中列出&q;不可用的包&q;?

条形图顶部与其错误条形图不对齐

如果COLSUM为>;0,则COLNAME为向量

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

如何在Quarto中使用美人鱼图表中的标记来加粗文本