我想按列Count
复制行。对于示例数据,我的代码工作正常,但是当我尝试使用大数据集时,出现错误:
rep(seq_len(dim(df1)[1]),df1 $ Count)中的错误:无效的'times'参数
我的数据和代码:
df1 <- data.frame(Month = rep(month.abb[1:12],10,replace = TRUE), Product = paste0('Product ', rep(LETTERS[1:10], each = 12)),
Count = sample(c(1:10),120, replace = T), stringsAsFactors = F)
df2 <- data.frame(df1[rep(seq_len(dim(df1)[1]), df1$Count), , drop = FALSE], row.names=NULL)
head(df2)
Month Product Count
1 Jan Product A 1
2 Feb Product A 4
3 Feb Product A 4
4 Feb Product A 4
5 Feb Product A 4
6 Mar Product A 10
我有由45000行和5列组成的数据,包括4个字符和1个数字。对于这些数据,我得到了以上错误。
答案 0 :(得分:2)
您可以这样做。这处理负值和NA
。
df2 <- data.frame(df1[rep(seq_len(dim(df1)[1]), with(df1, ifelse(Count > 0 & !is.na(Count), Count, 1))
), , drop = FALSE], row.names=NULL)
Count
为负或NA
的行将保持原样(这意味着它们将被复制到df2
一次,而无需重复)。