R:当NA为零时,如何在案例中求变量之和

R:当NA为零时,如何在案例中求变量之和,r,na,R,Na,用于说明的假数据: df <- data.frame(a=c(1,2,3,4,5), b=(c(2,2,2,2,NA)), c=c(NA,2,3,4,5))) df以下内容适用于您的特定示例,但我怀疑您的实际用例更复杂: df$count <- apply(df,1,function(x){sum(x == 1:3,na.rm = TRUE)}) > df a b c count 1 1 2 NA 2 2 2 2 2

用于说明的假数据:

df <- data.frame(a=c(1,2,3,4,5), b=(c(2,2,2,2,NA)), 
                 c=c(NA,2,3,4,5)))

df以下内容适用于您的特定示例,但我怀疑您的实际用例更复杂:

df$count <- apply(df,1,function(x){sum(x == 1:3,na.rm = TRUE)})
> df
  a  b  c count
1 1  2 NA     2
2 2  2  2     1
3 3  2  3     2
4 4  2  4     1
5 5 NA  5     0
df$count df
a b c计数
1 1 2 NA 2
2 2  2  2     1
3 3  2  3     2
4 4  2  4     1
5 NA 5 0
但这一总体方针应该奏效。例如,您的第二个示例如下:

df$count <- apply(df,1,function(x){sum(x == 2,na.rm = TRUE)})

df$count另一种方法是从data.frame的每一行中减去目标向量,求反,然后使用
na.rm=TRUE执行
rowSums

target <- 1:3
rowSums(!(df-rep(target,each=nrow(df))),na.rm=TRUE)
[1] 2 1 2 1 0

target <- rep(2,3)
rowSums(!(df-rep(target,each=nrow(df))),na.rm=TRUE)
[1] 1 3 1 1 0

target+1是一个很好的问题和一个很好的用户名:)太好了,我需要的一切都完成了!
df$count <- apply(df,1,function(x){sum(x == 2,na.rm = TRUE)})
df$count <- apply(df,1,function(x,compare){sum(x == compare,na.rm = TRUE)},compare = 1:3)
target <- 1:3
rowSums(!(df-rep(target,each=nrow(df))),na.rm=TRUE)
[1] 2 1 2 1 0

target <- rep(2,3)
rowSums(!(df-rep(target,each=nrow(df))),na.rm=TRUE)
[1] 1 3 1 1 0