我正在使用 R。下面你可以看到我的代码和数据:
df <- data.frame(
R1 = c("10 EFTA : 0 / BAA/GBR : 0 / ES : 2", "10","0"),
R2 = c("-", "EFTA : 0 / BAA/GBR : 0 / ES : 2","18")
)
现在我想拆分第一列 R1。一开始我想用以下命令分割第一行:
df[c('R1', 'R2')] <- str_split_fixed(df$R1, ' ', 2)
这条线准确地分割了我需要的第一行,下面你可以看到它现在看起来像一个数据框。
但是下一行出现问题。也就是说,现在您可以看到该值
"EFTA : 0 / BAA/GBR : 0 / ES : 2"
以及下一行中的值 18
丢失了。
那么任何人都可以帮助我如何解决这个问题并让 df 像下面所示的 df 一样:
你的算法何时选择什么不是很明确,但基于你想要的输出,像下面的代码可能会起作用?
library(tidyverse)
df <- tibble(
R1 = c("10 EFTA : 0 / BAA/GBR : 0 / ES : 2", "10","0"),
R2 = c("-", "EFTA : 0 / BAA/GBR : 0 / ES : 2","18")
)
df |>
separate_wider_regex(
R1,
patterns = c(digits = "^\\d+", "(?:\\s+)?", rest = ".*")
) |>
mutate(rest = if_else(rest == "", R2, rest),
.keep = "unused")
#> # A tibble: 3 × 2
#> digits rest
#> <chr> <chr>
#> 1 10 EFTA : 0 / BAA/GBR : 0 / ES : 2
#> 2 10 EFTA : 0 / BAA/GBR : 0 / ES : 2
#> 3 0 18
创建于 2023-10-09,使用 reprex v2.0.2