我在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
答案 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