r - 将分隔的字符串拆分为多列并将它们分成行

标签 r dplyr tidyr

我有这个数据框 to_expand有两列:

to_expand <- data.frame(first = c('a~b'), second = paste(list(c('1~2~3'), c('4~5~6')), collapse = '|'))

  first       second
1   a~b 1~2~3|4~5~6

我怎样才能把它变成:

# A tibble: 2 x 2
  first second
  <chr> <chr> 
1 a     1~2~3  
2 b     4~5~6

我尝试过使用 sepratate_rows()来自 tidyr但它给出了两列之间所有可能的组合。

任何帮助将不胜感激!


编辑:使用 separate_rows(second, sep = '\\|')给了我a~b两行。

> to_expand %>% separate_rows(second, sep = '\\|')
# A tibble: 2 x 2
  first second
  <chr> <chr> 
1 a~b   1~2~3 
2 a~b   4~5~6 

最佳答案

如果我们使分隔符相同,我们可以更简单地做到这一点

library(dplyr)
library(tidyr)
library(stringr)
to_expand %>% 
    mutate(first = str_replace(first, "~", "|")) %>% 
    separate_rows(first, second, sep = "\\|")
# A tibble: 2 x 2
  first second
  <chr> <chr> 
1 a     1~2~3 
2 b     4~5~6 

关于r - 将分隔的字符串拆分为多列并将它们分成行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68797695/

相关文章:

r - tidyr 使用 sep 括号时出现单独错误

从 sparklyr 中的多个子文件夹读取文件

r - 为另一个 data.table 列中的每个值外观检查一个 data.table 列中所有元素的最快方法

r - 在 R 中提取带有时间戳的每小时最大值/最小值/中值

r - 根据索引列创建新列

r - 使用 R dplyr 根据多个条件找到最佳组合

r - 如何在kknn函数中进行预测?图书馆(kknn)

r - as.tibble()、as_data_frame() 和 tbl_df() 之间有什么区别?

r - 理解dplyr select()中的非标准评估NSE和标准评估SE

r - 使用 R tidyrivot_wide 从多个列名称和值获取宽格式数据