如何结合使用R的apply与recode函数完成变量重编码并解决报错
R语言apply与recode搭配使用问题解决
报错解决方法
你遇到的报错是apply()函数参数不完整导致的,修正后的可运行代码如下:
# 若使用car包的recode,需先加载包 library(car) vars <- c("var", "var2", "var3", "var4", "var5") # 完整传入apply的必填参数 recode_vars <- apply( X = mydata[, vars], MARGIN = 2, # 指定按列操作 FUN = recode, # 指定要应用的函数为recode recodes = "lo:129=0; 130:hi=1" # 传入recode的重编码规则 ) # 若需将重编码后的变量写回原数据框 mydata[, vars] <- recode_vars
报错原因
apply()函数有三个必填参数:操作对象X、操作边际MARGIN、要执行的函数FUN。原代码中将recode()直接作用于数据框后作为apply()的唯一输入,既没有指定按行还是按列操作,也没有给apply()传入要执行的函数,因此触发FUN缺失的报错。
apply与recode搭配的通用方法
- 操作前先确认已加载对应recode函数的包,重编码规则语法要和所用包的要求匹配(上述示例用的是car包recode的规则语法)
- 按列批量重编码变量时,
MARGIN参数固定传值为2,按行处理传值为1 - recode函数所需的重编码规则、缺失值处理等额外参数,直接写在
FUN = recode之后即可,apply会自动将这些参数传递给每次调用的recode函数
通用调用模板如下:
recode_result <- apply( X = 待处理数据集[目标变量集合], MARGIN = 2, FUN = recode, recodes = "自定义重编码规则", .default = NULL, # 可选:未匹配到规则的取值的默认赋值 .missing = NULL # 可选:缺失值的赋值规则 ) # 转换为数据框格式(按需使用) recode_result <- as.data.frame(recode_result)
内容的提问来源于stack exchange,提问作者B.Nin
相关产品推荐
相关产品推荐

