Вот один вариант с tidyverse
, где мы uncount
на основе столбца «пассажиры», сгруппированные по «полету», применяем rpois
с количеством строк (n()
) и элементом first
«время прибытия»
library(dplyr)
library(tidyr)
df1 %>%
uncount(passengers) %>%
group_by(flight) %>%
mutate(arrivaltime = rpois(n(), first(arrivaltime)))
Или другой вариант - использовать от map2
до l oop над соответствующими элементами «пассажиров», «время прибытия» для применения rpois
и unnest
столбец list
для расширения строк набора данных
library(purrr)
df1 %>%
mutate(arrivaltime = map2(passengers, arrivaltime, rpois)) %>%
unnest(c(arrivaltime))
# A tibble: 5 x 4
# flight terminal passengers arrivaltime
# <chr> <chr> <dbl> <int>
#1 LX123 A 3 127
#2 LX123 A 3 110
#3 LX123 A 3 131
#4 UA1 B 2 109
#5 UA1 B 2 133
data
df1 <- structure(list(flight = c("LX123", "UA1"), terminal = c("A",
"B"), passengers = c(3, 2), arrivaltime = c(120, 130)), row.names = c(NA,
-2L), class = c("tbl_df", "tbl", "data.frame"))