Я распространяю несколько категориальных переменных на булевы столбцы, используя tidyr::spread()
. Поскольку данные содержат НС, spread
создает новый столбец без имени.R - tidyr - spread() - дело с NA как имя столбца
Что я ищу способ, чтобы избавиться от САМ с помощью
а) решение трубопроводов (я пытался select_()
и '['()
, но не знают, как относиться к NA столбца имя или индекс) или
б) пользовательская функция, которая была бы еще лучше
с) способ просто не генерировать столбцы NA, Hadleyverse совместимы, если это возможно.
Ниже мое текущее (и очень неэлегантно повторяющееся) решение.
library(tidyr)
library(dplyr)
test <- data.frame(id = 1:4, name = c("anna", "bert", "charles", "daniel"),
flower = as.factor(c("rose", "rose", NA, "petunia")),
music = as.factor(c("pop","classical", "rock", NA)),
degree = as.factor(c(NA, "PhD", "MSc", "MSc")))
test <- test %>%
mutate(truval = TRUE) %>%
spread(key = flower, value = truval, fill = FALSE)
test[ncol(test)] <- NULL
test <- test %>%
mutate(truval = TRUE) %>%
spread(key = music, value = truval, fill = FALSE)
test[ncol(test)] <- NULL
test <- test %>%
mutate(truval = TRUE) %>%
spread(key = degree, value = truval, fill = FALSE)
test[ncol(test)] <- NULL
test