Wie kann ich das Delta zwischen mehreren Variablen berechnen, die nach Benutzer-IDs in einem "langen" Datenrahmen gruppiert sind?Berechnung des Deltas zwischen mehreren Variablen, gruppiert nach Benutzer-IDs
Datenformat:
d1 <- data.frame(
id = rep(c(1, 2, 3, 4, 5), each = 2),
purchased = c(rep(c(T, F), 3), F, T, T, F),
product = rep(c("A", "B"), 5),
grade = c(1, 2, 1, 2, 2, 3, 7, 5, 1, 2),
rate = c(10, 12, 10, 12, 12, 14, 22, 18, 10, 12),
fee = rep(c(1, 2), 5))
Das ist meine Kreisverkehr Lösung:
dA <- d1 %>%
filter(product == "A")
dB <- d1 %>%
filter(product == "B")
d2 <- inner_join(dA, dB, by = "id", suffix = c(".A", ".B"))
d3 <- d2 %>%
mutate(
purchased = if_else(purchased.A == T, "A", "B"),
dGrade = grade.B - grade.A,
dRate = rate.B - rate.A,
dFee = fee.B - fee.A) %>%
select(id, purchased:dFee)
All dies scheint nur schrecklich ineffizient und komplex. Ist tidyr::spread
oder eine andere dplyr/tidyr Funktion hier angebracht? (Ich konnte nichts anderes zum Arbeiten bekommen) ...