R 使用源数据帧中每行的可变副本数创建数据帧
假设我有一个数据帧R 使用源数据帧中每行的可变副本数创建数据帧,r,apply,R,Apply,假设我有一个数据帧 source <- data.frame(ID=c(1,2), COUNT=c(3,4)) 我想将其转换为一个数据帧,该数据帧具有每个ID的计数记录,并具有一个新的唯一ITEMID,如下所示 ITEMID SOURCEID 1 1 1 2 2 1 3 3 1 4 4 2 5 5 2 6 6 2 7 7
source <- data.frame(ID=c(1,2), COUNT=c(3,4))
我想将其转换为一个数据帧,该数据帧具有每个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类型函数来实现这一点
do.call(rbind, lapply(split(source, source$ID), with, df, {
itemid <- seq(count)
sourceid <- id
data.frame(itemid, sourceid)
})
do.call(rbind,lappy(split(source,source$ID)),with,df{
itemid
do.call(rbind, lapply(split(source, source$ID), with, df, {
itemid <- seq(count)
sourceid <- id
data.frame(itemid, sourceid)
})
do.call(rbind,lappy(split(source,source$ID)),with,df{
itemid无需应用
功能:
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
orig无需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
orig