我计划在一行中过滤多列的数据,以减少运行代码所用的时间。这是我用来测试代码的示例数据。基本上,我想删除包含 0、1、2 和 NA 的任何行。
test <- data.frame(A = c(1,0,2,3,4,0,5,6,0,7,0,8,0,9,NA),
B = c(0,1,0,2,3,4,0,5,0,7,8,0,NA,9,0),
C = c(1,2,3,0,0,4,5,6,0,7,0,8,NA,0,9))
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来清理我的数据。虽然它完成了工作,但代码非常乏味,当我使用大型数据库运行它时,需要花费相当长的时间。
test %>% filter(!is.na(A)) %>%
filter(!is.na(B)) %>%
filter(!is.na(C)) %>%
filter(A != 0) %>%
filter(A != 1) %>%
filter(A != 2) %>%
filter(B != 0) %>%
filter(B != 1) %>%
filter(B != 2) %>%
filter(C != 0) %>%
filter(C != 1) %>%
filter(C != 2)
A B C
1 6 5 6
2 7 7 7
Run Code Online (Sandbox Code Playgroud)
filter我尝试使用、filter_at、 和来缩短代码any_vars,但没有成功。下面是我处理这个问题的尝试(所有这些代码都不起作用,因为它们无法删除包含 0 (或 …