我对R很新,并且遇到了NA的问题.这个问题可能已在其他地方得到解答,但我似乎无法找到答案.我试图做一些相反的rowSums()事情,因为我试图减去x2和x3从中x1产生x4没有NA的产生.我目前使用的代码如下:
> 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
Run Code Online (Sandbox Code Playgroud)
换句话说,我想让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
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
如果所有列都具有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)
Run Code Online (Sandbox Code Playgroud)
如果您要将NA视为0。否则,您可以将上面公式中的0替换为所需的值。
只需使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7243 次 |
| 最近记录: |