在R数据帧上添加具有NA值的列

时间:2014-07-07 14:10:24

标签: r na

我在R上有一个数据框名称df:

    a                       b           c   d
1   BR073ELAC5EIANID-115781 2014-04-14  7   3   
2   BR073ELAC5EIANID-115781 2014-04-15  NA  NA  
3   BR073ELAC5EIANID-115781 2014-04-16  6   3   
4   BR073ELAC5EIANID-115781 2014-04-17  5   2   
5   BR073ELAC5EIANID-115781 2014-04-18  2   3   

如果列c = NA且列d = NA,我想添加一个等于1的列 我尝试以下方法:

df$e <- (if(is.na(df$c) && is.na(df$d)) 1 else 0)

但我得到的所有列e等于1

3 个答案:

答案 0 :(得分:3)

您可以避免ifelse,只需使用&

> df$e <- 1*(is.na(df$c) & is.na(df$d))
> df
                        a          b  c  d e
1 BR073ELAC5EIANID-115781 2014-04-14  7  3 0
2 BR073ELAC5EIANID-115781 2014-04-15 NA NA 1
3 BR073ELAC5EIANID-115781 2014-04-16  6  3 0
4 BR073ELAC5EIANID-115781 2014-04-17  5  2 0
5 BR073ELAC5EIANID-115781 2014-04-18  2  3 0

答案 1 :(得分:1)

这是使用逻辑索引的一种方法:

as.numeric(is.na(df$c) & is.na(df$d))

## [1] 0 1 0 0 0

答案 2 :(得分:0)

或者

df$e <- 1*(rowSums(is.na(df[,3:4]))==2)
 df$e
 #[1] 0 1 0 0 0