2012-02-13 74 views
0

說我有一個數據幀在源數據幀創建,每行的副本的變量數A數據幀

source <- data.frame(ID=c(1,2), COUNT=c(3,4)) 

,看起來像這樣:

ID COUNT 
1 1  3 
2 2  4 

我想改變這個到具有COUNT紀錄每一個ID,一個新的獨特的ITEMID一個數據幀,這樣

ITEMID SOURCEID 
1  1  1 
2  2  1 
3  3  1 
4  4  2 
5  5  2 
6  6  2 
7  7  2 

我可以用一個for循環做,但我想學習如何做到這一點與應用型功能

回答

4

無需apply功能:

orig <- data.frame(ID=1:2,COUNT=3:4) 
new <- data.frame(ITEMID=seq(sum(orig$COUNT)), SOURCEID=rep(orig$ID,times=orig$COUNT)) 
new 
    ITEMID SOURCEID 
1  1  1 
2  2  1 
3  3  1 
4  4  2 
5  5  2 
6  6  2 
7  7  2 
+0

+1,比我好!我需要更多的睡眠.... – 2012-02-13 11:51:31

0

如何:

do.call(rbind, lapply(split(source, source$ID), with, df, { 
    itemid <- seq(count) 
    sourceid <- id 
    data.frame(itemid, sourceid) 
})