有效地解析字符串

时间:2016-12-04 17:33:12

标签: r

所以我的数据框中有一个列,它实际上是一个长特征字符串,用于对每个记录的变量进行编码。它可能看起来像这样:

string<-c('001034002025003996','001934002199004888') 

但更长。

字符串的结构使每个6个字符配对在一起。所以你可以像这样查看上面的字符串:

001034 002025 003996 001934 002199 004888

这些的前三个字符是对应于某个变量的代码,接下来的三个字符对应于该变量的值。所以上面的内容可以分为三列,如下所示:

   var001   var002   var003   var004
1   034       025     996       NA
2   934       199      NA      888

我需要一种解析此字符串的方法,并返回带有扩展列的数据框。

我写了一个看起来像这样的嵌套循环:

for(i in 1:length(string)){
  text <- string[i]
  for(j in seq(1,505,6)){
    var <- substr(text,j, j+2)
    var.value <- substr(text, j+3, j+5)
    index <- (as.numeric(var))
    df[i, index] <- var.value 
  }
 }

其中df是为接收数据而创建的空数据帧。这可行,但在大量数据上运行缓慢。有一个更好的方法吗?

0 个答案:

没有答案