我有一个数据帧A,有两列,分别是“数量”和“次数”。我想创建一个新的数据帧B,它根据“次数”重复数据帧A中的“数量”。例如,如果dataframe A的第一行"Ammount"=50,"Number“=4,第二行"Amount"=80,"Number”=2,我想创建一个新的dataframe B,如下所示:
50 50 50 50
80 80
因此,数据帧B的行将具有不同的长度。请帮帮我!
发布于 2018-05-31 05:58:00
以下是使用apply
完成此操作的一种方法
A <- data.frame(Amount = c(50, 80), Times = c(4, 2))
# Amount Times
# 1 50 4
# 2 80 2
x <- apply(A, 1, function(r) {
c(rep(r[['Amount']], r['Times']), rep(NA, max(A['Times'] - r['Times'])))
})
t(x)
# [,1] [,2] [,3] [,4]
# [1,] 50 50 50 50
# [2,] 80 80 NA NA
这里有一个稍微简单一点的替代方案:
> do.call(rbind, lapply(mapply(rep, A$Amount, A$Times), `length<-`, max(A$Times)))
[,1] [,2] [,3] [,4]
[1,] 50 50 50 50
[2,] 80 80 NA NA
https://stackoverflow.com/questions/50613653
复制相似问题