在数据框中重新编码多个数字变量
Recoding multiple numeric variables in dataframe
有人可以检查我在做什么错误吗?我所有的变量都是李克特量表,从 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,
错误是
Error: .vars
must be a character/numeric vector or a vars()
object, not a list Run rlang::last_error()
to see where the error
occurred.
既然您已经在使用dplyr
,我提出一个dplyr
解决方案。此外,由于您插入的所有变量都在 1 到 7 之间的李克特量表中,您可以将 8 和它们的值 - [=15] 之间的差异应用于所有你想要的变量(由向量 all_your_vars
表示) =] 将保持 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
有人可以检查我在做什么错误吗?我所有的变量都是李克特量表,从 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,
错误是
Error:
.vars
must be a character/numeric vector or avars()
object, not a list Runrlang::last_error()
to see where the error occurred.
既然您已经在使用dplyr
,我提出一个dplyr
解决方案。此外,由于您插入的所有变量都在 1 到 7 之间的李克特量表中,您可以将 8 和它们的值 - [=15] 之间的差异应用于所有你想要的变量(由向量 all_your_vars
表示) =] 将保持 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