1

有人可以检查我在做什么错误吗?我所有的变量都是李克特量表,从 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()以查看错误发生的位置。

4

1 回答 1

1

由于您已经在使用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
于 2020-06-19T13:54:26.573 回答