r - 从作为向量提供的多个变量中逐行计算 NA
问题描述
我有一个数据:
test_df <- data.frame(x1 = c("a", "b", "c", NA, NA),
x2 = sample(1:5),
x3 = c(T, NA, F, T, NA),
x4 = c(NA, NA, 1, 2, 3),
stringsAsFactors = F)
colset1 <- c("x1", "x2", "x3")
colset2 <- c("x2", "x3", "x4")
包含变量名称的数据框和向量。
如何检查(最好的dplyr
方式),如果向量()中提供的任何列行colset
包含任何NA
s?
colset1
isTRUE FALSE TRUE FALSE FALSE
和 for colset2
is的预期答案FALSE FALSE TRUE TRUE FALSE
(最好是可以变异为新的逻辑变量,没关系)。
另一个问题是:如何计算NA
那些列中的 s?colset1
is0 1 0 1 2
和 for colset2
is的预期答案1 2 0 0 1
我正在尝试变异...ifelse(length(sum(is.na(vars(colset1)))) == 0)
,但仍然缺少一些东西,它不起作用,我迷失在自己的代码中:)
谢谢!
解决方案
一种dplyr
解决方案可能是:
test_df %>%
mutate(colset1 = Reduce(`|`, across(colset1, ~ is.na(.))),
colset2 = Reduce(`|`, across(colset2, ~ is.na(.))))
要获得计数:
test_df %>%
mutate(colset1 = rowSums(across(colset1, ~ is.na(.))),
colset2 = rowSums(across(colset2, ~ is.na(.))))
x1 x2 x3 x4 colset1 colset2
1 a 3 TRUE NA 0 1
2 b 4 NA NA 1 2
3 c 1 FALSE 1 0 0
4 <NA> 5 TRUE 2 1 0
5 <NA> 2 NA 3 2 1
推荐阅读
- sql - group by 子句中的错误
- javascript - vm.attribute 与 this.attribute
- netlogo - Netlogo 中是否有 NOOP?
- python - 在 Python 中调用嵌套模块
- asp.net - 无法对超过 65500 行的数据透视表使用宏
- rust - 如何使用 serde 从 XML 属性中反序列化一个数字?
- apache-kafka - 使用 kafka-avro-console-consumer 将 Avro 记录作为二进制数组获取
- highcharts - 如何计算桑基图中的权重?
- eclipse - 在 Xtext 的 Eclipse 大纲视图中扩展现有的上下文菜单
- apache-kafka - 我应该在 Akka 流中的 Kafka 源之后添加缓冲区吗