如何使用字符串有效地创建data.table行?

时间:2017-02-07 14:15:55

标签: r regex data.table

我通过从一列拆分字符串并将其转换为行来生成data.table。尽管如此,我已经有了预期的结果,它有点慢,而且我有一个庞大的数据集。有更有效的方法吗? 这是我的例子:

edlist <- list()
for(i in seq_along(cvu_wos_cl3$UT)){
  t <- cvu_wos_cl3[,.(UT, AU2, NAU, PY, C1, RP, CC1, NC1)][i]
  a <- unlist(strsplit(t[,AU2], ";"))
  o <- seq_along(a)
  edlist[[i]] <- data.table(AU=a, OR=o, t[, .(UT, PY, C1, RP, CC1, NAU, NC1) ])       
}
edlist1 <- rbindlist(edlist)

原始data.table是:

> cvu_wos_cl3[,.(UT, AU2, NAU, PY, C1, RP, CC1, NC1)][1,1:3]
                    UT                      AU2 NAU
1: WOS:000070949000010 120472; 998;  Soberon, X   3

从这里开始,我将每行存储到t,然后将列AU2,一串字符,按";"分割。

t[,AU2]
[1] "120472; 998;  Soberon, X"
unlist(strsplit(t[,AU2], ";"))
[1] "120472"       " 998"         "  Soberon, X"

后期,创建一个新的data.table,其中有3行最初是一行:

data.table(AU=a, OR=o, t[, .(UT, PY, C1, RP, CC1, NAU, NC1) ])[,1:3]
             AU OR                  UT
1:       120472  1 WOS:000070949000010
2:          998  2 WOS:000070949000010
3:   Soberon, X  3 WOS:000070949000010

欢迎任何建议。

0 个答案:

没有答案