如果旁边的列有值,如何用列中的零替换 NA?使用 R

How to replace NA with cero in a columns, if the columns beside have a values? using R

我想知道一种方法来替换列的 NA,如果旁边的列有一个值,这是因为,使用一个例子,如果工人在其他列中有值意味着他那天去上班,所以如果他有一个 NA,这意味着应该用 cero 替换,如果周围的列中没有值,则意味着他那天没有去上班,NA 是正确的

我一直通过对其他列进行排序来做到这一点,但它非常耗时

我的数据样本称为 df,真实数据有 30 列和大约 30,000 行

  df <- data.frame(
  hours = c(NA, 3, NA, 8), 
  interactions = c(NA, 3, 9, 9),
  sales = c(1, 1, 1, NA)
)
df$hours2 <- ifelse(
  test = is.na(df$hours) & any(!is.na(df[,c("interactions", "sales")])),
  yes = 0, 
  no = df$hours)

df
  hours interactions sales hours2
1    NA           NA     1      0
2     3            3     1      3
3    NA            9     1      0
4     8            9    NA      8

您还可以进行以下操作:

library(dplyr)

mutate(df, X = if_else(is.na(hours) | is.na(interactions), 0, hours))

#   hours interactions sales X
# 1    NA           NA     1 0
# 2     3            3     1 3
# 3    NA            9     1 0
# 4     8            9    NA 8