Перекодировать несколько похожих переменных в 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)
Другие вопросы по тегам