【问题标题】:Assign names to variables with condition为具有条件的变量分配名称
【发布时间】:2020-06-08 23:02:52
【问题描述】:

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

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

我不知道如何解决这个问题。

【问题讨论】:

  • 什么是zip 变量。你需要ifelse(cllw$x >=1 & cllw$zip <=3, "a", "b")
  • @akrun 哦,这是错误的 ois

标签: r if-statement variables


【解决方案1】:

ifelse 参数是

ifelse(测试,是,否)

在 OP 的帖子中,提供了“test”和“yes”,没有提供“no”

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?我只熟悉那个
  • @Lisam 另一个值“b”是什么?
  • @Lisam 你可以使用ifelse(df$x &gt;=1 &amp; df$x &lt;=3, "a", df$x)
  • 我真的没有另一个 b,而是有多个其他选项,比如如果 a 没有满足它可能是 b、c、d 等
  • 我可以在 4 分钟内投票,这就是为什么我还没有这样做
【解决方案2】:

如果您只需要分配两个值,您可以不使用ifelse 来执行此操作:

c('b', 'a')[(df$x >= 1 & df$x <= 3) + 1]
#[1] "a" "a" "a" "a" "a" "b" "b"

如果您需要检查很多条件,您可以使用来自dplyrcase_when 执行此操作。

library(dplyr)
df %>%
 mutate(new_x = case_when(between(x, 1, 3) ~ "a", 
                          #Add more conditions
                          TRUE ~ "b"))

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多