你如何将 is.na 应用于 r 中的多个列

How do you apply is.na to multiple columns in r

我想做一件很简单但更优雅的事情。见下文。

x <- data.frame(matrix(1:12, 4, 3))

x[1,] <- NA

x$X4 <- ifelse(is.na(X1) & is.na(X2) & is.na(X3), 1, 0) 

现在我想做类似的事情

x$X4 <- ifelse(is.na(X1, X2, X3), 1, 0) 

很简单吧?有什么帮助吗?谢谢

我要实现的真实代码:

df2 <- df1 %>%
  rowwise() %>% 
  mutate(
    sum = ifelse(is.na(X1) & is.na(X2) & is.na(X3) & is.na(X4) & is.na(Y), NA_real_, sum(X1, X2, X3, X4, na.rm = T))
  )

可能

x$X4=ifelse(rowMeans(is.na(x))==1,1,0)

  X1 X2 X3 X4
1 NA NA NA  1
2  2  6 10  0
3  3  7 11  0
4  4  8 12  0

x$X4=as.integer(rowMeans(is.na(x))==1)

如果您想查看整个数据集以找到任何值,那么:

    any(is.na(df))
    # This will return true

获取列总和:

    colSums(is.na(df))

您也可以使用 purr 进行映射并获取每列的 nas 总和,但这就是上面所做的:

    map(df, ~sum(is.na(.)))

在这些情况下,只需使用均值调整总和即可。