数据帧列乘以NA值[关闭]

问题描述 投票:-2回答:2

我想生成一个新的列C,它是我的数据帧中A和B的乘法,但A和B可能包含随机的NA值。如果A或B中的任何一个是NA,那么C也应该是NA。

我做的是

data$C <- data$A * data$B

而预期的结果将是

    A   B    C
[1] 2   3    6
[2] 4   NA   NA
[3] NA  2    NA
[4] 3.2 1.5  4.8

但是,实际结果给出了所有C的NA,即

    A   B    C
[1] 2   3    NA
[2] 4   NA   NA
[3] NA  2    NA
[4] 3.2 1.5  NA

我怎样才能解决这个问题?我正在使用Rstudio btw。先感谢您

r
2个回答
1
投票

不确定你在做什么。这肯定有效:

data <- data.frame(A = c(2, 4, NA, 3.2),
                   B = c(3, NA, 2, 1.5))
data
#     A   B
# 1 2.0 3.0
# 2 4.0  NA
# 3  NA 2.0
# 4 3.2 1.5

data$C <- data$A * data$B
data
#     A   B   C
# 1 2.0 3.0 6.0
# 2 4.0  NA  NA
# 3  NA 2.0  NA
# 4 3.2 1.5 4.8

1
投票

您可以使用ifelse声明:

data$C <- ifelse(is.na(data$A) || is.na.(data$B), NA, data$A * data$B)
© www.soinside.com 2019 - 2024. All rights reserved.