重塑数据框 - 根据 R 中的数据可用性创建行

萨拉·阿尔塔米拉诺

我想将原始数据框重塑为目标数据框,如下所示。在此处输入图像描述

但首先,要重新创建数据框:

original <- data.frame(caseid = c("id101", 'id201', 'id202', 'id301', 'id302'),
                      age_child1 = c('3', '5', '8', NA, NA), 
                      age_child2 = c('1', '7', NA, NA, NA),
                      age_child3 = c('2', '6', '8', '3', NA))

target <-   data.frame(caseid = c('id101_1', 'id101_2', 'id101_3', 'id201_1', 'id201_2', 'id201_3', 'id202_1', 'id202_3', 'id301_3'),
                       age    = c(3, 1, 2, 5, 7, 6, 8, 8, 3))

干酪代表母亲。我想为每个孩子创建一个新的caseid行,并将各自的“年龄”值添加到年龄列。如果没有可用的“年龄”值,则意味着没有n个子节点,并且不应创建新行。

谢谢您的帮助!

浪塘

您可以使用pivot_longer()及其各种有用的选项:

pivot_longer(original, cols = starts_with("age"), names_prefix = "age_child",values_to = "age",values_transform = as.integer) %>%
  filter(!is.na(age)) %>%
  mutate(caseid = paste0(caseid,"_",name)) %>%
  select(-name)

输出:

# A tibble: 9 × 2
  caseid    age
  <chr>   <int>
1 id101_1     3
2 id101_2     1
3 id101_3     2
4 id201_1     5
5 id201_2     7
6 id201_3     6
7 id202_1     8
8 id202_3     8
9 id301_3     3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章