You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确在dplyr中使用recode?多列重编码报错求解

解决dplyr中across+recode重编码的报错问题

错误原因

你的数据列是数值型,但调用recode时用了字符串格式的键(比如"1" = "7"),这会导致recode无法匹配数值输入,同时触发参数不匹配的报错——对于数值型输入,recode的键应该直接写数值,不需要加引号,否则会被识别为无效参数。

解决方案

方案1:用正确的recode语法适配数值型输入

如果需要保持输出为数值型(实现7→1、6→2的反转计分),直接使用数值作为键和值:

test <- tibble (
  a_test = c(7,6,5,4),
  b_test = c(7,7,5,3),
  c_test = c(7,3,7,5),
  d_test = c(7,7,7,7)
)

test %>%
  mutate(across(contains("test"), ~
                  recode(.x, 1 = 7, 2 = 6, 3 = 5, 4 = 4, 5 = 3, 6 = 2, 7 = 1)))

如果需要输出为字符型,将值改为字符串即可:

test %>%
  mutate(across(contains("test"), ~
                  recode(.x, 1 = "7", 2 = "6", 3 = "5", 4 = "4", 5 = "3", 6 = "2", 7 = "1")))

方案2:更简洁的反转计分写法

由于你的需求是固定的7分制反转计分(最终得分=8-原始得分),可以完全不用recode,直接用算术运算实现,代码更简洁高效:

test %>%
  mutate(across(contains("test"), ~ 8 - .x))

这个方法不仅避免了recode的参数错误问题,还大幅简化了代码逻辑。

内容的提问来源于stack exchange,提问作者joh_anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:41:24