Che cosa è un modo efficiente (qualsiasi soluzione che include pacchetti non di base accolti) per riportare le variabili dummy in un fattore.Variabili fittizie Collapse efficiente
race.White race.Hispanic race.Black race.Asian
1 1 0 0 0
2 0 0 0 1
3 1 0 0 0
4 0 0 1 0
5 0 0 0 1
6 0 1 0 0
7 1 0 0 0
8 1 0 0 0
9 1 0 0 0
10 0 0 1 0
output desiderato:
race
1 White
2 Asian
3 White
4 Black
5 Asian
6 Hispanic
7 White
8 White
9 White
10 Black
dati:
dat <- structure(list(race.White = c(1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L,
1L, 0L), race.Hispanic = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L,
0L), race.Black = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L),
race.Asian = c(0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("race.White",
"race.Hispanic", "race.Black", "race.Asian"), row.names = c(NA,
-10L), class = "data.frame")
Quello che ho cercato:
Questa è una possibile soluzione, ma sono sicuro che ci sia una migliore indicizzazione/dplyr/soluzione data.table/.etc.
apply(dat, 1, function(x) sub("[^.]+\\.", "", colnames(dat))[x])