繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM