По сути, вы хотите преобразовать длинные в широкие данные для каждой переменной.В этом случае вы можете lapply
преодолеть их с помощью tidyr::spread
.Предположим, что данные выглядят следующим образом:
library(dplyr)
library(tidyr)
df <- data.frame(
ID = c(rep("A", 3), rep("B", 3)),
n_flight = rep(seq(3), 2),
time = seq(19, 24),
velocity = rev(seq(65, 60))
)
Тогда следующие данные будут генерировать интересующие вас результаты, если вы избавитесь от дополнительных переменных ID.
lapply(
setdiff(names(df), c("ID", "n_flight")), function(x) {
df %>%
select(ID, n_flight, !!x) %>%
tidyr::spread(., key = "n_flight", value = x) %>%
setNames(paste(x, names(.), sep = "_"))
}
) %>%
bind_cols()
Позвольте мнезнаю, что это не то, что ты собирался.