在重新编码中使用 if, else
Using if, else within recode
我正在尝试复制一些代码,但是 运行 遇到了麻烦:
data$var1
具有 1-7 的值,我试图在名为 data$var2
的新变量中将其减少到仅 2 个值。代码如下所示:
data$var2 <- recode(data$var1, "1:3=1; else=0")
但是,当我执行代码时,出现以下错误:
"Error: Argument 2 must be named, not unnamed"
我正在使用最新版本的 R 并使用 Tidyverse 包。
我错过了什么? 'Argument 2 unnamed' 是什么意思?
我建议使用 ifelse
:
data$var2 <- ifelse(data$var1 < 4, 1, 0)
你对recode
的使用是错误的:
data$var2<- recode(data$var1, "1:3=1; else=0")
您只提供了一个字符串,而不是多个参数 [name]=[replacement]
。有关详细信息,请阅读 help('recode')
。
"Correct" 与 recode
的方式类似于
data$var2 <- recode(data$var1, `1` = 1, `2` = 1, `3` = 1, .default = 0)
但在这种情况下你应该坚持使用 ifelse
。
有很多方法可以做到这一点,其中很多可能比我的方法更容易。
# Create some data
df <- c()
df$var1 <- ceiling(runif(20, min = 0.5, max = 7.5))
df$var1
# [1] 5 8 5 2 6 6 8 4 5 4 4 7 3 6 1 5 7 6 5 6
# inds will contain TRUE/FALSE
inds <- (df$var1 <= 3)
df$var2[inds] <- 1
df$var2[!inds] <- 0
df$var2
# [1] 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
旁注:我使用 df
作为对象的名称,因为调用对象 data
不是一个好主意。名称 data
在 R 中保留用于其他目的(参见 ?data
)。即使在这种情况下它可能不会导致问题,我仍然建议使用 df
(或其他任何东西)而不是 data
我正在尝试复制一些代码,但是 运行 遇到了麻烦:
data$var1
具有 1-7 的值,我试图在名为 data$var2
的新变量中将其减少到仅 2 个值。代码如下所示:
data$var2 <- recode(data$var1, "1:3=1; else=0")
但是,当我执行代码时,出现以下错误:
"Error: Argument 2 must be named, not unnamed"
我正在使用最新版本的 R 并使用 Tidyverse 包。
我错过了什么? 'Argument 2 unnamed' 是什么意思?
我建议使用 ifelse
:
data$var2 <- ifelse(data$var1 < 4, 1, 0)
你对recode
的使用是错误的:
data$var2<- recode(data$var1, "1:3=1; else=0")
您只提供了一个字符串,而不是多个参数 [name]=[replacement]
。有关详细信息,请阅读 help('recode')
。
"Correct" 与 recode
的方式类似于
data$var2 <- recode(data$var1, `1` = 1, `2` = 1, `3` = 1, .default = 0)
但在这种情况下你应该坚持使用 ifelse
。
有很多方法可以做到这一点,其中很多可能比我的方法更容易。
# Create some data
df <- c()
df$var1 <- ceiling(runif(20, min = 0.5, max = 7.5))
df$var1
# [1] 5 8 5 2 6 6 8 4 5 4 4 7 3 6 1 5 7 6 5 6
# inds will contain TRUE/FALSE
inds <- (df$var1 <= 3)
df$var2[inds] <- 1
df$var2[!inds] <- 0
df$var2
# [1] 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
旁注:我使用 df
作为对象的名称,因为调用对象 data
不是一个好主意。名称 data
在 R 中保留用于其他目的(参见 ?data
)。即使在这种情况下它可能不会导致问题,我仍然建议使用 df
(或其他任何东西)而不是 data