У меня большой фрейм данных, и мне нужно рассчитать значения для комбинаций столбцов на основе столбца id. Я хотел бы сделать это в рамках tidyverse
, и я могу туда добраться, но он не выглядит очень элегантным и подверженным ошибкам. Возможно, кто-то может мне помочь.
Вот минимальный рабочий пример, аналогичный фактическим данным.
library(tidyverse)
df <- tibble(
id_combo = c("A_A1", "A_A1", "A_A2", "A_A2", "A_A2"),
f1 = runif(5),
f2 = runif(5),
f3 = runif(5),
b1 = runif(5),
b2 = runif(5),
b3 = runif(5)
)
f1_f2 <- df %>%
split(.$id_combo) %>%
map_dbl(., ~var(log(.$f1))+var(log(.$f2)))
f1_f3 <- df %>%
split(.$id_combo) %>%
map_dbl(., ~var(log(.$f1))+var(log(.$f2))+var(log(.$f3)))
f1_b2 <- df %>%
split(.$id_combo) %>%
map_dbl(., ~var(log(.$f1))+var(log(.$f2))+
var(log(.$b1))+var(log(.$b2)))
f1_b3 <- df %>%
split(.$id_combo) %>%
map_dbl(., ~var(log(.$f1))+var(log(.$f2))+var(log(.$f3))+
var(log(.$b1))+var(log(.$b2))+var(log(.$b3)))
var_sum_df <- tibble(id_combo = names(f1_f2),f1_f2, f1_f3, f1_b2, f1_b3)
Чего я надеюсь добиться, так это запустить функцию map_dbl
(или разумный эквивалент) после split(.$id_combo)
, указав столбцы на лету.
Я уверен, что это было бы возможно, но мои знания R еще недостаточно развиты, чтобы понять себя.