【问题标题】:if, else-if issue in R如果,否则 - 如果在 R 中的问题
【发布时间】:2018-07-26 09:48:00
【问题描述】:

所以我一直在做一些项目,其中我使用了多个 if-else-if 条件,我面临的问题是,每当满足第一个条件时,整个列都会填充该值本身,并且它不检查进一步的条件。
这是我正在使用的代码 sn-p :

rdw_acct_dedup$PROCESS <- if (substr(rdw_acct_dedup$STATUS_CD,1,1) == 'S') 
                      { 
                        rdw_acct_dedup$PROCESS <- '01)SOLD'
                      }else if(substr(rdw_acct_dedup$STATUS_CD,1,3) %in% c('894','895','910','994','D96','I25','I26','I27','Q34','V90','919','99F','99Q','D97','931','V22'))
                      {
                        rdw_acct_dedup$PROCESS <- '02)SIF-SETTLED'
                      }else if(substr(rdw_acct_dedup$STATUS_CD,1,3) %in% c('899','I45','PDV','U10','U39','V63'))
                      {
                        rdw_acct_dedup$PROCESS <-'03)SIF-PENDING'
                      }else if(substr(rdw_acct_dedup$STATUS_CD,1,1) == 'B') 
                      { 
                        rdw_acct_dedup$PROCESS <- '04)BANKRUPTCY'                                                                  
                      }else if(substr(rdw_acct_dedup$STATUS_CD,1,1) == 'V') 
                      { 
                        rdw_acct_dedup$PROCESS <- '05)PRE-BANKRUPTCY'
                      }else
                      {
                        rdw_acct_dedup$PROCESS <-'18)OTHER'
                      }

因此,即使满足第一个条件,整个流程列也会填充 '01)SOLD'

【问题讨论】:

  • 您能提供一个数据示例吗?

标签: r if-statement


【解决方案1】:

快速浏览一下如何使用嵌套的ifelse()

df <- data.frame(status = c("S104", "894T", "899X", "B67", "VXT", "ABC"))

  status
1   S104
2   894T
3   899X
4    B67
5    VXT
6    ABC

df$process <- with(df, ifelse(substr(status, 1, 1) == "S", "SOLD",
                              ifelse(substr(status, 1, 3) %in% c("894"), "SIF-SETTLED",
                                     ifelse(substr(status, 1, 3) %in% c("899"), "SIF-PENDING",
                                            ifelse(substr(status, 1, 1) == "B", "BANKRUPTCY",
                                                   ifelse(substr(status, 1, 1) == "V", "PRE-BANKRUPTCY", "OTHER"))))))

  status        process
1   S104           Sold
2   894T    SIF-SETTLED
3   899X    SIF-PENDING
4    B67     BANKRUPTCY
5    VXT PRE-BANKRUPTCY
6    ABC          OTHER

您需要将所有相关数字包含在%in% 条件的向量中,我太懒了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多