如何使用ifelse考虑NA

时间:2019-06-11 18:31:37

标签: r dataframe

我有这个文件:

Animal Bull   Breed     
Billy   1     Angus
Freddy  1     Nelore
Jone    NA    Nelore
Peter   2     Charoles

我有一些错误的犬种,我需要纠正。

我需要这种文件:

 Animal Bull   Breed     
 Billy   1     Angus
 Freddy  1     Angus
 Jone    NA    Nelore
 Peter   2     Charoles

我使用了以下代码:

df$Breed <- with(df, ifelse(Bull=='1', 'ANGUS', Breed))

但是我得到了这个数据文件:

Animal Bull   Breed     
Billy   1     Angus
Freddy  1     Angus
Jone    NA    NA
Peter   2     Charoles

公牛是NA时,品种也消失了。发生什么事? OBS:公牛的名字是字符。

1 个答案:

答案 0 :(得分:2)

使用is.na()

您可以编写一个条件,以考虑使用is.na()缺失的值。例如:

df$Breed <- with(df, ifelse(Bull=='1' & !is.na(Bull), 'Angus', Breed))


#>   Animal   Bull Breed   
#> 1 Billy       1 Angus   
#> 2 Freddie     1 Angus   
#> 3 Jone       NA Nelore  
#> 4 Peter       2 Charoles