【发布时间】:2018-05-30 20:34:24
【问题描述】:
我在 r 中有一个数据框,看起来像这样。
df<-data.frame(matrix(NA, nrow = 4, ncol = 4))
df[,1]<-c("472=20140112224524497,5752=122524,223=ZHRR6,69=0,"
,"472=20140112224606569,223=BNCG6,315=CC26R,69=22,"
,"50=986,472=20140112224607924,223=ZHCG6,69=98,"
,"66=2315,472=20140112224502367,379=2016,223=CMCG9,69=274,")
我想要的是从第一列中提取字符串并填充到每行的第二到第四列。
第 2 列,我需要 472= 和之后的第一个 "," 之间的字符串。
第 3 列,我需要 223= 和之后的第一个 "," 之间的字符串。
第 4 列,我需要介于 69= 和之后的第一个 "," 之间的字符串。
数据没有模式,值可以是整数或字母。
我当前的代码是:
df[,2:4]<-c(unlist(ex_between(df$X1, c('472='), c(','), extract=TRUE))
,unlist(ex_between(df$X1, c('223='), c(','), extract=TRUE))
,unlist(ex_between(df$X1, c('69='), c(','), extract=TRUE)))
此代码有效。但是,它非常慢,因为我每天有超过 100 万行,需要填充 12 列。
如果有人可以帮助修改和加快流程,我将不胜感激。
非常感谢,
【问题讨论】:
-
尝试 strsplit 与每一行的逗号,要么你也需要应用,或者它本身按行工作
标签: r string substring extract