Перекодировать несколько похожих переменных в R
Я работаю с набором данных среднего размера и мне интересно перекодировать несколько переменных одновременно.
Есть 15 переменных, закодированных как факторы с тремя уровнями. ДА =3, НЕТ =2, Н / Д =1. Я хотел бы перекодировать все 15 переменных в числовые. ДА =1, НЕТ =0, Н / А = НЭ.
До обновления моего программного обеспечения этот код работал.
my_data[, 9:23 := lapply(.SD, recode, "'YES'=1;'NO'=0;'N/A'=NA", as.factor.result= FALSE), .SDcols = 9:23]
Теперь я получаю сообщение об ошибке "Ошибка: Аргумент 2 должен быть назван, а не неназван" Пожалуйста, дайте мне знать, что я делаю неправильно / отсутствует здесь! Заранее спасибо!
1 ответ
Следующие работы:
library(dplyr)
library(data.table)
set.seed(10)
sampler <- function() as.character(sample(c(1:3), 20, TRUE))
my_data <- data_frame(
id = 1:20,
a = sampler(),
b = sampler(),
c = sampler()
)
dt <- data.table(copy(my_data))
recoder <- function(x) {
x <- as.integer(x) - 2
x[x < 0] <- NA
x
}
## data.table approach
cols <- colnames(dt)[-1]
dt[ ,(cols) := lapply(.SD, recoder), .SDcols = cols][]
dt
## dplyr approach
my_data %>%
mutate_at(vars(a:c), recoder)