我对R来说相当新,并且遇到了NA的问题。这个问题可能已在其他地方得到解答,但我似乎无法找到答案。我尝试与rowSums()
相反,因为我试图从x2
中减去x3
和x1
以生成x4
{1}}没有NA&#39}。我目前使用的代码如下:
> x <- data.frame(x1 = 3, x2 = c(4:1, 2:5), x3=c(1,NA))
> x$x4=x$x1-x$x2-x$x3
> x
x1 x2 x3 x4
1 3 4 1 -2
2 3 3 NA NA
3 3 2 1 0
4 3 1 NA NA
5 3 2 1 0
6 3 3 NA NA
7 3 4 1 -2
8 3 5 NA NA
换句话说,我想让NA更加类似于rowSums
允许na.rm=TRUE
参数的方式,以便得到这个结果:
x1 x2 x3 x4
1 3 4 1 -2
2 3 3 NA 0
3 3 2 1 0
4 3 1 NA 2
5 3 2 1 0
6 3 3 NA 0
7 3 4 1 -2
8 3 5 NA -2
非常感谢任何帮助。
答案 0 :(得分:5)
如果所有列都有NA,那么你可以使用这样的东西 -
x$x4 <- ifelse(is.na(x$x1),0,x$x1) -ifelse(is.na(x$x2),0,x$x2)-ifelse(is.na(x$x3),0,x$x3)
如果您想将NAs视为0.否则您可以将上述公式中的0替换为您需要的值。
答案 1 :(得分:3)
只需使用rowSums
:
> x$x4 <- x$x1 - rowSums(x[,2:3], na.rm=TRUE)
> x
x1 x2 x3 x4
1 3 4 1 -2
2 3 3 NA 0
3 3 2 1 0
4 3 1 NA 2
5 3 2 1 0
6 3 3 NA 0
7 3 4 1 -2
8 3 5 NA -2