我正在使用中等大小的数据集,我有兴趣一次重新编码几个变量。
有15个变量被编码为具有三个级别的因子。 YES = 3,NO = 2,N / A = 1。 我想将所有15个变量重新编码为数字。 YES = 1,NO = 0,N / A = NA。
在更新我的软件之前,此代码有效。
my_data[, 9:23 := lapply(.SD, recode, "'YES'=1;'NO'=0;'N/A'=NA", as.factor.result= FALSE), .SDcols = 9:23]
现在我收到错误"错误:参数2必须命名,而不是未命名" 请让我知道我在做错了/错过了什么! 提前致谢!
答案 0 :(得分:0)
以下作品:
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)