我有一个数据框(或矢量?)
x <- data.frame(a=c("A_B_D", "B_C"))
我想通过第一个“ _”实例将x$a
中的向量分成两列以获取
x$b
[1] "A" "B_D"
和
x$c
[2] "B" "C"
我尝试了gsub的变体,但无法解决。
答案 0 :(得分:2)
一个想法是用另一个定界符替换第一个_
并在新的定界符上拆分。之所以可行,是因为使用sub
仅替换找到的第一个定界符(而gsub
替换所有定界符),即
strsplit(sub('_', ',', x$a), ',', fixed = TRUE)
#[[1]]
#[1] "A" "B_D"
#[[2]]
#[1] "B" "C"
要在原始数据框中创建两个新列,
within(x, new <- data.frame(do.call(rbind, strsplit(sub('_', ',', x$a), ',', fixed = TRUE))))
# a new.X1 new.X2
#1 A_B_D A B_D
#2 B_C B C
答案 1 :(得分:1)
另一种选择是使用tidyr::separate
:
separate(x,a,into = c("b","c"),sep = "_",remove = FALSE,extra = "merge")