gpt4 book ai didi

r - 如何使用 Dplyr 在 R 编程中按 NA 过滤

转载 作者:行者123 更新时间:2023-12-05 01:02:06 25 4
gpt4 key购买 nike

我正在尝试使用 Dplyr 和 filter 函数按 NA 进行过滤(只需将 NA 的行保留在指定列中)。使用下面的代码,只是返回没有数据的列标签。我是否正确编写代码?此外,如果没有 dplyr 有可能(或更容易)做,那也很有趣。谢谢。

filter(tata4, CompleteSolution == "NA", KeptInformed == "NA")

最佳答案

你可以使用 complete.cases()

dplyr::filter(df, !complete.cases(col1, col2))

这给出了:

#  col1 col2 col3
#1 NA 5 5
#2 NA 6 6
#3 5 NA 7

基准测试

large_df <- df[rep(seq_len(nrow(df)), 10e5), ]

目前的结果:

library(microbenchmark)
mbm <- microbenchmark(
akrun1 = large_df[rowSums(is.na(large_df[1:2]))!=0, ],
akrun2 = large_df[Reduce(`|`, lapply(large_df[1:2], is.na)), ],
steven = filter(large_df, !complete.cases(col1, col2)),
times = 10)

enter image description here

#Unit: milliseconds
# expr min lq mean median uq max neval cld
# akrun1 814.0226 924.0837 1248.9911 1208.7924 1434.2415 2057.1338 10 c
# akrun2 499.3404 671.9900 736.2418 687.9194 861.4477 1068.1232 10 b
# steven 112.9394 113.0604 214.1688 198.4542 299.7585 355.1795 10 a

数据

df <- structure(list(col1 = c(1, 2, 3, 4, NA, NA, 5), col2 = c(1, 2, 
3, 4, 5, 6, NA), col3 = c(1, 2, 3, 4, 5, 6, 7)), .Names = c("col1",
"col2", "col3"), row.names = c(NA, -7L), class = "data.frame")

关于r - 如何使用 Dplyr 在 R 编程中按 NA 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com