【问题标题】:ifelse statement using logical condition in R在R中使用逻辑条件的ifelse语句
【发布时间】:2020-10-31 05:10:36
【问题描述】:

我有这个数据框

DF
ID    WORD_LIST   
1     APPLE
2     RED
3     SNOW
4     ANKARA
5     RENEW

我只想选择以“A”或“R”开头的单词

DF
ID    WORD_LIST    WORDS_A_R  
1     APPLE        APPLE
2     RED          RED
3     SNOW         NA
4     ANKARA       ANKARA
5     RENEW        RENEW

我试过这段代码

DF %>% mutate(WORDS_A_R = ifelse(grepl("^A" | "^R", WORD_LIST), as.character(WORD_LIST), NA))

但是出现这个错误

operations are possible only for numeric, logical or complex types

【问题讨论】:

标签: r if-statement dplyr logical-operators logical-or


【解决方案1】:

您还可以将base Rsubstring() 函数一起使用:

#Create condition
cond1 <- substr(DF$WORD_LIST,1,1)=='A' | substr(DF$WORD_LIST,1,1)=='R'
#Create var
DF$WORDS_A_R <- NA
DF$WORDS_A_R[cond1]<-DF$WORD_LIST[cond1]

ID WORD_LIST WORDS_A_R
1  1     APPLE     APPLE
2  2       RED       RED
3  3      SNOW      <NA>
4  4    ANKARA    ANKARA
5  5     RENEW     RENEW

【讨论】:

    【解决方案2】:

    你可以使用:

    transform(df, WORDS_A_R  = ifelse(grepl("^[AR]", WORD_LIST), WORD_LIST, NA))
    

    如果你喜欢dplyr

    library(dplyr)
    df %>%
      mutate(WORDS_A_R  = ifelse(grepl("^[AR]", WORD_LIST), WORD_LIST, NA))
    
    #  ID WORD_LIST WORDS_A_R
    #1  1     APPLE     APPLE
    #2  2       RED       RED
    #3  3      SNOW      <NA>
    #4  4    ANKARA    ANKARA
    #5  5     RENEW     RENEW
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      相关资源
      最近更新 更多