R 复制行[max]次,同时复制不太频繁项目的值[max-Y]次

R 复制行[max]次,同时复制不太频繁项目的值[max-Y]次,r,dataframe,duplicates,copy,R,Dataframe,Duplicates,Copy,我有一个由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您的数据和答案 df <- data.

我有一个由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您的数据和答案

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))

df可能会很慢,因此您可能希望取消接受我的答案,并收集更多的解决方案。很抱歉回复延迟。事实上,它在几百行47列的数据框架中运行得非常好。
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