r - 在数据框中重新编码多个数值变量
问题描述
有人可以检查我在做什么错误吗?我所有的变量都是李克特量表,从 1(非常同意)到 7(非常不同意)。现在在回归中,这些与我不断增加的因变量呈负相关。因此,我想更改数据中值的顺序。我想将所有这些重新编码的变量从 1-7 更改为 7-1。我尝试了以下代码
Newdata <- TPBdata %>%
mutate_at(c("V5","V6", "V7", "V8", "V9", "V10", "V11",
"V12", "V13", "V15", "V15", "V15_b", "V15_a",
"V15_eco", "V18", "V19", "V20", "V21", "V24", "V26", "V25", "V22",
funs(recode(., 7 == 1, 6 == 2, 5 == 3, 4 == 4, 3 == 5, 2 == 6, 1== 7, .default = NaN))))
我也试过 '7' = 1 也没有引号 7 = 1,
错误是
错误:
.vars
必须是字符/数字向量或vars()
对象,而不是列表 运行rlang::last_error()
以查看错误发生的位置。
解决方案
由于您已经在使用dplyr
,我提出了一个dplyr
解决方案。all_your_vars
此外,由于您插入的所有变量都在 1 到 7 之间的李克特量表中,因此您可以将8 与其值之间的差值应用于您想要的所有变量(由向量表示) -NaN
将保持不变NaN
。
TPBdata %>%
mutate(across(all_your_vars, ~ 8 - .x))
例子
set.seed(42)
TPBdata <- data.frame(
V5 = sample(c(1:7, NaN), 5, replace = TRUE),
V6 = sample(c(1:7, NaN), 5, replace = TRUE)
)
# V5 V6
# 1 1 4
# 2 5 2
# 3 1 2
# 4 1 1
# 5 2 NaN
all_your_vars <- c("V5", "V6")
TPBdata %>%
mutate(across(all_your_vars, ~ 8 - .x))
# V5 V6
# 1 7 4
# 2 3 6
# 3 7 6
# 4 7 7
# 5 6 NaN
推荐阅读
- excel - VBA:如何从特定的列和单元格开始“空行”?
- android - 在另一个类中设置凌空 JSON 对象参数
- c# - unity开始触摸未检测到
- c++ - ofstream 变量不能出现在 OpenMP firstprivate 中?
- android - HttpURLConnection .getInputStream() 在棉花糖而不是奥利奥上崩溃
- sql-server - 识别和非识别关系
- java - 如何在 StarUML 中为泛型类生成 java 代码?
- unity3d - 用纸板看真实世界
- django - 从另一个表导入列
- hyperledger-fabric - 从核心超级账本命令调用chaincode.js时如何获取控制台信息