如果满足条件,我想为变量分配一个“名称”。
x
1
1
2
3
3
4
4
然后,我想在df中重命名该变量。例如,将范围从1到3的所有变量更改为“ a”。
Outcome
x
"a"
"a"
"a"
"a"
"a"
"b"
"b"
我已经尝试过以下代码:df $ x = 1&df $ x <= 3,“ a”)我收到以下错误:缺少参数no,没有默认值
我不知道该如何解决。
ifelse
参数是
ifelse(测试,是,否)
在OP的帖子中,提供了“测试”和“是”,而没有提供“否”
ifelse(df$x >=1 & df$x <=3, "a", "b")
或者如果我们只想替换条件
ifelse(df$x >=1 & df$x <=3, "a", df$x)
或更容易
df$x[df$x >=1 & df$x <=3] <- 'a'
或带有replace
replace(df$x, df$x >=1 & df$x <=3, "a")
df <- data.frame(x = c(1, 1, 2, 3, 3, 4, 4))
如果仅需要分配两个值,则无需ifelse
即可进行此操作:
c('b', 'a')[(df$x >= 1 & df$x <= 3) + 1]
#[1] "a" "a" "a" "a" "a" "b" "b"
如果需要检查很多条件,可以使用case_when
中的dplyr
进行此操作。
library(dplyr)
df %>%
mutate(new_x = case_when(between(x, 1, 3) ~ "a",
#Add more conditions
TRUE ~ "b"))