你如何将 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(.)))
在这些情况下,只需使用均值调整总和即可。
我想做一件很简单但更优雅的事情。见下文。
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(.)))
在这些情况下,只需使用均值调整总和即可。