【发布时间】:2023-03-26 14:15:02
【问题描述】:
我有一个数据框,在同一列中包含不同数量的数据点:
library(tidyverse)
df <- tribble(~id, ~data,
"A", "a;b;c",
"B", "e;f")
我想为每个数据点获取一行,分离列data 的内容并将其分布在行上。这段代码给出了预期的结果,但是很笨拙:
df %>%
separate(data,
into = paste0("dat_",1:5),
sep = ";",
fill = "right") %>%
pivot_longer(starts_with("dat_"),
names_to = "data_number",
names_pattern = "dat_(\\d+)") %>%
filter(!is.na(value))
#> # A tibble: 5 x 3
#> id data_number value
#> <chr> <chr> <chr>
#> 1 A 1 a
#> 2 A 2 b
#> 3 A 3 c
#> 4 B 1 e
#> 5 B 2 f
首选 Tidyverse 解决方案。
【问题讨论】: