假设我有一个像这样的数据框(我的问题的简化、类似版本):
ID <- c(1,2)
value <- c("1+4-3","2+7-6+4-3")
data.frame(ID,value)
ID value
1 1+4-3
2 2+7-6+4-3
3 -1+3
我需要通过多个分隔符(
value
和 +
)将 -
列拆分为多列,同时将分隔符保留在单独的列中。
生成的数据框应该是这样的:
ID x1 x2 x3 x4 x5 x6 x7 x8 x9
1 1 + 4 - 3 <NA> <NA> <NA> <NA>
2 2 + 7 - 6 + 4 - 3
3 - 1 + 3 <NA> <NA> <NA> <NA> <NA>
此外,我不知道需要多少个结果列(可能不是示例中的 9 个,而是 50 个)。
实现这一目标的最佳方法是什么?
谢谢
如果您的数字仅由
digits
组成,您可以尝试
df %>%
mutate(value = str_extract_all(value, "\\d+|\\D")) %>%
unnest(value) %>%
mutate(name = seq_len(n()), .by = ID) %>%
pivot_wider(names_prefix = "X")
这给出了
# A tibble: 2 × 10
ID X1 X2 X3 X4 X5 X6 X7 X8 X9
<dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 1 + 4 - 3 NA NA NA NA
2 2 2 + 7 - 6 + 4 - 3