我有一个由136列组成的数据框,其中47列包含特定因子的计数数据。我正在使用arules
包进行关联规则分析,该包似乎并不能解释累积数据,因为整数被视为唯一项而不是累积计数(即“ 3”只是一个对象,而不是3个实例)东西)。因此,我试图根据每一行的最大值来复制行,同时还要将任何其他数字复制适当的次数。例如:
df <- data.frame(A1 = c(0,2,0,3),A2 = c(1,0,2,0), A3 = c(0,1,3,2))
将成为:
df <- data.frame(A1 = c(0,2,2,0,0,0,3,3,3),
A2 = c(1,0,0,2,2,0,0,0,0),
A3 = c(0,1,0,3,3,3,2,2,0))
如您所见,最大值为3的行将被重复3次。关联的2将重复2次,其余单元格将填充0。
我的许多牢房中都有大量物品,在不久的将来我将不得不再次这样做,因此,如果有人提出任何建议,我将非常感激。
答案 0 :(得分:0)
您的数据和答案
df <- data.frame(A1 = c(0,2,0,3),A2 = c(1,0,2,0), A3 = c(0,1,3,2))
ans <- data.frame(A1 = c(0,2,2,0,0,0,3,3,3),
A2 = c(1,0,0,2,2,0,0,0,0),
A3 = c(0,1,0,3,3,3,2,2,0))
解决方案
myfun <- function(row) {
M <- max(row)
apply(row, 2, function(x) c(rep(x, times=x), rep(0, times=M-x)))
}
library(magrittr)
test <-
do.call(rbind, lapply(seq_len(nrow(df)), function(x) myfun(df[x, ]))) %>%
as.data.frame
all.equal(test, ans)
# TRUE