在源数据帧创建,每行的副本的变量数A数据帧

问题描述:

说我有一个数据帧在源数据帧创建,每行的副本的变量数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循环做,但我想学习如何做到这一点与应用型功能

无需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

如何:

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