|
正则表达式,是很繁琐的,不如多编几行程序:
library(tidyrverse)
library(stringr)
library(magrittr)
################################
xda<-data.frame(x1=x1) ###将x1 放入data.frame 中,x2 同样做法
x<-str_count(xda$x1," ") ###读取每个观察的空格数,这也确定了其用空格可分的字符串数,如下行:
x<-max(x)+1 ###每个观察的字符串数
xvars<-paste("X",1:x,sep="") ###建个下面暂用的变量名
##以空格为界,将字符分开,没有的在左边用NA 填补
xda%<>%separate(col=x1,into=xvars,sep=" ",fill="left",remove=TRUE)
rpnaFun<-function(x) ifelse(is.na(x) , "" , x) ###将NA 转为 空格的函数
xda%<>%mutate_each(funs(rpnaFun)) ###将xda 中的每个NA 全转为空格
xda%<>%mutate(V1=paste(X1,X2,X3,X4,X5,X6,sep=" "),
V2=paste(X7,X8,sep=" "))%>% ##求两个想要的变量值,这显得不太自主??
dplyr::select(V1,V2)%>% ###只保留相要的二个变量
mutate(V1=str_trim(V1,side="left"),V2=str_trim(V2,side="left") ###将左边可能存在空格删除
#############################
|