对于使用“ R”(用于SPSS),我是新手,对于给定变量的多个响应或情况,我在重新编码该变量的值时遇到麻烦。我正在尝试使用“ ifelse”函数来实现此目的,但是我无法使该函数用于修改两个以上变量值。我想重新编码具有多种情况的变量的响应。当前数据中包含#的1、2、3、4,我想像这样重新编码这些数字:
我正在尝试使用“ ifelse”函数来实现此目的,但是我无法使该函数为特定变量修改两个以上的不同值。
ChildPABase19_test$Predilection_1 <- ifelse(ChildPABase19_test$Predilection_1==1, 0.6, ifelse(ChildPABase19_test$Predilection_1==2, 1.2,
ifelse(ChildPABase19_test$Predilection_1==3, 2.5, ifelse(ChildPABase19_test$Predilection_1==4, 1.8))
我希望变量Predilection_1的列中的所有数据都用0.6、1.2、2.5、1.8重新编码,但是我一直收到错误消息:参数“ no”丢失了,没有默认值。我将如何修改此代码的任何想法将不胜感激!
答案 0 :(得分:1)
如果您add more white space浏览代码,则可能更容易发现问题。
ChildPABase19_test$Predilection_1 <- ifelse(
ChildPABase19_test$Predilection_1 == 1,
0.6,
ifelse(
ChildPABase19_test$Predilection_1 == 2,
1.2,
ifelse(
ChildPABase19_test$Predilection_1 == 3,
2.5,
ifelse(
ChildPABase19_test$Predilection_1 == 4,
1.8
)
)
由此您可能会看到两件事:最后一个ifelse()
仅具有两个参数,而不是三个,并且缺少两个右括号。第一件事是导致错误消息的原因:缺少的第三个参数是R抱怨的'no'参数丢失。如果原始值不是1、2、3或4之一,则应将此参数设置为希望Predilection_1
的值。如果您没有考虑任何值,则应该设置到NA
。
您还应该添加两个缺少的右括号,否则代码将无法运行。
难以读取嵌套的ifelse()
函数是dplyr
程序包包含case_when()
函数的原因之一。您可以使用它生成更短的代码:
ChildPABase19_test <- mutate(ChildPABase19_test, Predilection_1 = case_when(
Predilection_1 == 1 ~ 0.6,
Predilection_1 == 2 ~ 1.2,
Predilection_1 == 3 ~ 2.5,
Predilection_1 == 4 ~ 1.8,
TRUE ~ NA_real_
))
如果需要进一步的帮助,documentation for case_when()
中的示例在解释语法方面做得很好。
答案 1 :(得分:1)
我认为使用dplyr
软件包的这段代码可能会有所帮助:
require(dplyr)
x = c(1, 2, 3, 4)
transform_rule <- list(
"1" = "0.6",
"2" = "1.2",
"3" = "2.5",
"4" = "1.8"
)
x_recoded <- as.numeric(recode(x, !!!transform_rule))
答案 2 :(得分:1)
library(expss)
ChildPABase19_test = data.frame(Predilection_1 = c(1, 2, 3, 4))
recode(ChildPABase19_test$Predilection_1) = c(1 ~ 0.6, 2 ~ 1.2, 3 ~ 2.5, 4 ~ 1.8)
ChildPABase19_test
# Predilection_1
# 1 0.6
# 2 1.2
# 3 2.5
# 4 1.8