2013-04-30 26 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)]