У меня есть data.frame
, к которому мне нужно добавить строки, но количество добавляемых строк (и их содержимое) определяется из существующих строк data.frame
. Я также хотел бы закончить столбцом, перечисляющим строки каждой дублированной группы. Вот пример данных:
> A <- data.frame(veh = c("MINIVAN","HEAVY TRUCK"),age = c(2.5,3.5),rows_to_add = c(2,3))
> A
veh age rows_to_add
1 MINIVAN 2.5 2
2 HEAVY TRUCK 3.5 3
и желаемый результат:
> B <- rbind(do.call("rbind",replicate(n=unique(A[1,"rows_to_add"])+1,A[1,],simplify = FALSE)),
+ do.call("rbind",replicate(n=unique(A[2,"rows_to_add"])+1,A[2,],simplify = FALSE)))
> B <- cbind(B,enum = c(0:2,0:3))
> B
veh age rows_to_add enum
1 MINIVAN 2.5 2 0
2 MINIVAN 2.5 2 1
3 MINIVAN 2.5 2 2
24 HEAVY TRUCK 3.5 3 0
21 HEAVY TRUCK 3.5 3 1
22 HEAVY TRUCK 3.5 3 2
23 HEAVY TRUCK 3.5 3 3
Очевидно, что код, который я использовал здесь для генерации вывода, является грязным, не масштабируемым и, возможно, неэффективным. Я ищу общее решение, которое позволило бы мне делать это с большим data.frame
с разумной скоростью и избегать циклов (попытка ускорить загрузочный код является частью импульса для этого вопроса).
Этот вопрос касается более слабой версии проблемы, в которой число или добавляемые строки не зависят от строк самих данных, а вставляемые строки могут содержать NA
s, но я не нашел способа обобщить ответ там.
Как мне добиться желаемого результата в целом?