Я пытаюсь получить фиктивные переменные для следующей таблицы:
df1 <- structure(list(Value1 = c(9.330154398, 32.43881489, 54.77178387, 54.77178387),
Value2 = c(1, 2, 3, 8),
var1 = c("HomeATL", "AwaySDN", "AwayLAN", "AwayLAN"),
var2 = c("AwayHOU", "HomeATL", "HomeATL", "HomeATL"),
var3 = c("HomeEast", "HomeWest", "AwayEast", "AwayWest"),
var3values = c(1,2,3,4),
var4 = c("AwayWest", "AwayWest", "HomeSame", "HomeEast"),
var4values = c(5,6,7,8)),
class = "data.frame", row.names = c(NA,-4L))
Результат должен выглядеть следующим образом:
Value1 Value2 HomeEast HomeWest AwayEast AwayWest HomeSame HomeATL AwayHOU AwaySDN AwayLAN
9.330154398 1 1 0 0 5 0 1 1 0 0
-32.43881489 2 0 2 0 6 0 1 0 1 0
54.77178387 3 0 0 3 0 7 1 0 0 1
54.77178387 8 8 0 0 4 0 1 0 0 1
Я уже спрашивал что-то подобное, и подход, который я использовал, был:
library(tidyverse)
rownames_to_column(df1, 'rn') %>%
gather(key, val, var1:var4) %>%
count(rn, val) %>%
spread(val, n, fill = 0) %>%
select(-rn) %>%
bind_cols(df1[1:2], .)
Однако, он возвращает фиктивные значения с 1 или 0, а не значения какого-либо предопределенного столбца.
Как я могу это сделать?