[英]R string split manipulation in a data frame does not work
这是一个简单的测试案例。
计划仅拆分和提取每个字符串的第一部分。
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
如今,有多种打包功能可用于将列拆分为多个部分。 在这里,您可以使用tidyr包中的split separate()
函数。 由于要在空格上分割的第一个值,因此可以删除第一个空格之后的所有内容。
tidyr::separate(test, x, "y", "\\s.*", FALSE, extra = "drop")
# x y
# 1 a b a
# 2 c d c
str_split返回一个列表,其中每个元素对应于原始原子向量中的一个元素。 因此,您将需要使用lapply
或类似参数来适当地建立索引
test %>% mutate(y = unlist(lapply(str_split(x,'\\s+'),'[[',1)))
我们也可以使用sub
library(data.table)
setDT(test)[, y:= sub('\\s+.*', '', x)]
test
# x y
#1: a b a
#2: c d c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.