【问题标题】:Is there a R function for using ifelse with 2 conditions是否有 R 函数可以在 2 个条件下使用 ifelse
【发布时间】:2021-08-08 19:52:26
【问题描述】:

这是我的数据样本

a<-c(NA,NA,NA,65,75,85)
b<-c(12,15,22,65,20,30)
c<-(12,15,22,65,75,85)
data<-data.frame(a,b,c)

我正在尝试创建一个新变量 d,这样如果 a=NA 然后 b,如果 a=b 然后 a,最后,如果 a>b 然后 a。

我的最终数据d&lt;-c(12,15,22,65,75,85)

谢谢

【问题讨论】:

  • 您可以嵌套ifelse 语句 - 或查看通用版本的dplyr::case_when
  • @AndrewGustar 我们无法将值与NA 进行比较,因为它总是返回NA(如R 帮助中所述)
  • @DebarthaPaul 这就是is.na() 的用途

标签: r if-statement dplyr case subset


【解决方案1】:

这是使用dplyr::case_when 完成的操作注意,在此代码中,如果a &lt; b 将产生NA 值。

library(dplyr)

data %>%
  mutate(d = case_when(
    is.na(a) ~ b,
    a == b ~ a,
    a > b ~ a
  ))
#>    a  b  c  d
#> 1 NA 12 12 12
#> 2 NA 15 15 15
#> 3 NA 22 22 22
#> 4 65 65 65 65
#> 5 75 20 75 75
#> 6 85 30 85 85

reprex package (v2.0.0) 于 2021 年 5 月 19 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多