在R中重新编码几个类似的变量

在R中重新编码几个类似的变量,r,dplyr,data.table,recode,R,Dplyr,Data.table,Recode,我正在处理一个中等大小的数据集,我对同时记录几个变量感兴趣 有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必须命名,而不是未命名” 请让

我正在处理一个中等大小的数据集,我对同时记录几个变量感兴趣

有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必须命名,而不是未命名” 请让我知道我做错了什么/错过了什么! 提前谢谢

以下工作:

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)
库(dplyr)
库(数据表)
种子(10)

采样器嘿,谢谢你的回复。不幸的是,data.table方法只返回NAs,而dplyr方法没有影响。我做错什么了吗?这些是字符值(当我之前将它们逐个变量转换为数字变量时),显示为3,2,1。我确实找到了一种方法来修改我的原始代码:我的数据[9:23:=lapply(.SD,recode,
YES
=1,
NO
=0),.SDcols=9:23]