Повторяющиеся строки на основе других значений столбца в R - PullRequest
1 голос
/ 28 октября 2019

Я хотел бы дублировать строки по столбцу 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 цифру,И за эти данные я получаю вышеуказанную ошибку.

1 Ответ

2 голосов
/ 28 октября 2019

Вы можете сделать это таким образом. Это обрабатывает отрицательные и 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 один раз без повторения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...