在data.frame中复制行的最快方法

时间:2013-04-30 22:50:49

标签: r dataframe

我有一个数据集,其中一行somtimes对应两个或多个数据点,如一列中的逗号分隔所示。例如:

identifier         pos  name
ENSG00000208234    1    foo   
ENSG00000199674    5,8  bar    
ENSG00000221622    4    foobar

我想通过以下方式扩展它

identifier         pos  name
ENSG00000208234    1    foo   
ENSG00000199674    5    bar
ENSG00000199674    8    bar    
ENSG00000221622    4    foobar 

有没有一种方法不涉及遍历每一行并创建一个新的data.frame?

由于

1 个答案:

答案 0 :(得分:0)

假设X是您的data.frame:

library(data.table)
DT <- data.table(X)

DT2 <- DT[, c(.SD, list(posv=strsplit(pos, ",")))]
DT2[, list(pos=unlist(posv)), by=list(identifier, name)]

请注意,如果posfactor,您首先要将其转换为character
    DT[, pos := as.character(pos)]