首页 > 解决方案 > 拆分和排列字符串列数据

问题描述

R新手,所以我有点迷茫。我有一个包含各种变量的数据集,包括以下列“drink_daily”:

drink_daily <- c("(ID 3) Cola & (ID 1) Sprite",
  "(ID 1) Sprite & (ID 3) Cola",
  "(ID 2) water & (ID 3) Cola & (ID 4) Other",
  "(ID 3) Cola & (ID 1) Sprite & (ID 2) water")

等等

我需要在数据框中得到这样的结果:

[1] "1" & "3"
[2] "1" & "3"
[3] "2" & "3" & "4"
[4] "1" & "2" & "3"

标签: r

解决方案


您可以从stringrpurrr库中获得一些帮助。例如

library(purrr)
stringr::str_match_all(drink_daily, "\\(ID (\\d+)\\)") %>% 
  map(function(x) x[,2]) %>% 
  map(as.numeric) %>% 
  map(sort) %>% 
  map_chr(paste, collapse=" & ")
# [1] "1 & 3"     "1 & 3"     "2 & 3 & 4" "1 & 2 & 3"

我们使用str_match_all提取字符串“(ID #)”中的数字,然后对它们进行排序并将它们粘贴在一起。


推荐阅读