2013-04-30 46 views
0

我有一个数据集,其中一行somtimes对应于两个或多个数据点,如一列中的逗号分隔所示。例如:最快的方法来重复data.frame中的行

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

尝试: http://stackoverflow.com/questions/14226575/unpacking-a-factor-list-from-a-data-frame和htt电话号码://stackoverflow.com/questions/14268908/expand-data-frame-with-a-split-in-r – 2013-04-30 22:57:40

回答

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