是否可以使用dplyr过滤data.frame以获取完整的案例?complete.cases当然,有一个所有变量的列表.但这是a)当有很多变量时很冗长,而b)当变量名称未知时是不可能的(例如在处理任何data.frame的函数中).
library(dplyr)
df = data.frame(
x1 = c(1,2,3,NA),
x2 = c(1,2,NA,5)
)
df %.%
filter(complete.cases(x1,x2))
Run Code Online (Sandbox Code Playgroud) 我在看似简单的任务时遇到了一些问题:删除所有变量都NA使用dplyr的所有行.我知道可以使用基本R(删除R矩阵中的所有数据为NA并删除R中数据文件的空行)来完成,但我很想知道是否有一种简单的方法可以使用dplyr .
例:
library(tidyverse)
dat <- tibble(a = c(1, 2, NA), b = c(1, NA, NA), c = c(2, NA, NA))
filter(dat, !is.na(a) | !is.na(b) | !is.na(c))
Run Code Online (Sandbox Code Playgroud)
filter上面的调用做了我想要的但是在我面临的情况下它是不可行的(因为有大量的变量).我想可以通过使用filter_并首先使用(长)逻辑语句创建一个字符串来实现它,但似乎应该有一个更简单的方法.
另一种方法是使用rowwise()和do():
na <- dat %>%
rowwise() %>%
do(tibble(na = !all(is.na(.)))) %>%
.$na
filter(dat, na)
Run Code Online (Sandbox Code Playgroud)
但这看起来并不太好,虽然它完成了工作.其他想法?
我有同样的问题,如这里解决的,但我必须使用 data.table。
过滤掉所有行的最佳 data.table 方式是什么,其中特定/“相关”列全部不适用,其他“不相关”列显示的内容(不适用/或不)并不重要。
library(data.table)
df <- data.frame('epoch' = c(1,2,3),
'irrel_2' = c(NA,4,5),
'rel_1' = c(NA, NA, 8),
'rel_2' = c(3,NA,7)
)
df
#> epoch irrel_2 rel_1 rel_2
#> 1 1 NA NA 3
#> 2 2 4 NA NA
#> 3 3 5 8 7
setDT(df)
wrong <- na.omit(df, cols = 3:4)
Run Code Online (Sandbox Code Playgroud)
创建于 2023-05-25,使用reprex v2.0.2
我只想过滤掉第 2 行。你的解决方案是什么?