在 R 中拆分数据框中的特定列

问题描述 投票:0回答:1

我正在使用 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 一样:

r stringr
1个回答
1
投票

你的算法何时选择什么不是很明确,但基于你想要的输出,像下面的代码可能会起作用?

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

© www.soinside.com 2019 - 2024. All rights reserved.