数据框中的R字符串拆分操作不起作用

时间:2015-11-20 05:12:55

标签: r string dataframe dplyr

这是一个简单的测试案例。

计划拆分并仅提取每个字符串的第一部分。

library(dplyr)
library(stringr)
test = data.frame(x= c('a b', 'c d'),stringsAsFactors = F)

test
    x
1 a b
2 c d

test %>% mutate(y = str_split(x,'\\s+')[[1]][1])
    x y
1 a b a
2 c d a

期待的是:

    x y
1 a b a
2 c d c

3 个答案:

答案 0 :(得分:3)

现在有各种打包功能可以将列拆分成碎片。在这里,您可以使用 tidyr 包中的separate()函数。由于您希望在空格上分割的第一个值,您可以删除第一个空格后的所有内容。

tidyr::separate(test, x, "y", "\\s.*", FALSE, extra = "drop")
#     x y
# 1 a b a
# 2 c d c

答案 1 :(得分:2)

str_split返回一个列表,其中每个元素对应于原始原子向量中的元素。因此,您需要使用lapply或类似的方法进行适当的索引

test %>% mutate(y = unlist(lapply(str_split(x,'\\s+'),'[[',1)))

答案 2 :(得分:2)

我们也可以使用sub

library(data.table)
setDT(test)[, y:= sub('\\s+.*', '', x)]
test
#     x y
#1: a b a
#2: c d c