说我有数据框
source <- data.frame(ID=c(1,2), COUNT=c(3,4))
看起来像这样:
ID COUNT
1 1 3
2 2 4
我想将其转换为每个ID都有COUNT条记录的数据框,并带有一个新的唯一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循环来完成它,但我希望学习如何使用应用类型函数
答案 0 :(得分: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
答案 1 :(得分:0)
怎么样:
do.call(rbind, lapply(split(source, source$ID), with, df, {
itemid <- seq(count)
sourceid <- id
data.frame(itemid, sourceid)
})