将条件分配给变量名

问题描述 投票:1回答:2

如果满足条件,我想为变量分配一个“名称”。

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,没有默认值

我不知道该如何解决。

r if-statement variables
2个回答
1
投票

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))

0
投票

如果仅需要分配两个值,则无需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"))
© www.soinside.com 2019 - 2024. All rights reserved.