在R中重新编码几个类似的变量
我正在处理一个中等大小的数据集,我对同时记录几个变量感兴趣 有15个变量编码为三级因子。是=3,否=2,不适用=1。 我想将所有15个变量重新编码为数字。是=1,否=0,不适用=不适用 在更新我的软件之前,这段代码有效在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必须命名,而不是未命名” 请让
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]