【问题标题】:Error: argument "no" is missing, with no default错误:缺少参数“no”,没有默认值
【发布时间】:2021-04-17 19:03:35
【问题描述】:

我正在尝试创建三个新列,它们是适合人类可读的诊断摘要。例如,如果 diag_1 mutate() 输入 diagnosis1 出现问题。 x 参数“no”缺失,没有默认值ℹ输入diagnosis1ifelse(...)

这是我的代码:

diabiates %>% 
    mutate(diagnosis1 = ifelse(diag_1 > 140, "infection", 
                               ifelse (diag_1 > 130, "digestive", 
                                       ifelse(diag_1 <20, "neoplasm"))))

                  
  encounter_id diag_1 diag_2 diag_3
1   182795622   428 410 491
2   185569164   428 403 682
3   68184246    428 401 413
4   217930950   415 401 272
5   94628052    648 659 250
6   116653320   414 411 493
7   75331956    730 707 731
8   100954620   428 414 250
9   137518212   427 427 427
10  284406012   715 276 414
11  101488188   403 250 250


【问题讨论】:

    标签: r


    【解决方案1】:

    我们需要最后一个ifelseno 值。因为它是一个嵌套的ifelse,所以第一个ifelse 的“是”值为“感染”,而no 基于第二个ifelse 的输出。同样对于第二个ifelse,“否”来自第三个ifelse。但是,在最后一个或第三个ifelse 中,没有输入“否”。我们可以指定NA_character_ 来填充它

    library(dplyr)
    diabiates %>% 
        mutate(diagnosis1 = ifelse(diag_1 > 140, "infection", 
                               ifelse (diag_1 > 130, "digestive", 
                                  ifelse(diag_1 <20, "neoplasm", 
                      NA_character_))))
    

    此外,可以使用case_when 以更易读的方式来代替嵌套的ifelse

    diabiates %>%
        mutate(diagnosis1 = case_when(diag_1 > 140 ~ "infection",
                          diag_1 > 130 & diag_1 <= 140 ~ "digestive",
                          diag_1 < 20 ~ "neoplasm"))
    

    因为是顺序处理的,所以第二个条件也可以是diag_1 &gt; 130。但是,当我们以后阅读相同的代码时,明确地写东西会更容易理解


    或者可以使用cutfindInterval 来完成

    diabiates %>%
        mutate(diagnosis1 = cut(diag_1, breaks = c(-Inf, 20,  130, 140),
            labels = c("neoplasm", "digestive", "infection")))
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 2016-06-08
      • 2017-12-09
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      相关资源
      最近更新 更多