0

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

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?

谢谢

4

1 回答 1

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)]

于 2013-04-30T23:02:17.160 回答