所以我的数据框中有一个列,它实际上是一个长特征字符串,用于对每个记录的变量进行编码。它可能看起来像这样:
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是为接收数据而创建的空数据帧。这可行,但在大量数据上运行缓慢。有一个更好的方法吗?