R 移除NA和x27;在数据帧的几列上使用筛选函数

R 移除NA和x27;在数据帧的几列上使用筛选函数,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个很大的数据框,在不同的点上有NA。我需要删除几个具有更多NA值的行 我应用了filter使用is.na()条件来删除它们。然而,它们并没有产生丰硕的成果 S.No MediaName KeyPress KPIndex Type Secs X Y 001 Dat NA 1 Fixation 18 117 89 002 New NA

我有一个很大的数据框,在不同的点上有NA。我需要删除几个具有更多NA值的行

我应用了
filter
使用
is.na()
条件来删除它们。然而,它们并没有产生丰硕的成果

S.No    MediaName KeyPress     KPIndex  Type            Secs    X       Y
001     Dat       NA           1        Fixation        18      117     89
002     New       NA           NA       Saccade         33      NA      NA
003     Dat       NA           2        Fixation        23      117     NA    
我的代码
df%过滤器(df,!is.na(按键)&!is.na(KPIndex)&!is.na(X)&!is.na(Y))

我想根据使用dplyr的条件删除。在一个大的数据帧中,我有更多类似的行。我的代码有什么问题?

如果有多个列,请使用
filter\u at

library(dplyr)     
df %>%
   filter_at(vars(KeyPress, KPIndex, X, Y), any_vars(!is.na(.)))

或者使用
行和
基R

nm1 <- c("KeyPress", "KPIndex", "X", "Y")
df[rowSums(!is.na(df[nm1]))!= 0,]

nm1您应该使用
|
而不是
&

库(dplyr)
df1%>%
过滤器(!is.na(按键)|!is.na(KPIndex)|!is.na(X)|!is.na(Y))
#S.无MediaName按键KPIndex类型Secs X Y
#1 Dat NA 1固定18 117 89
#2 3 Dat NA 2固定23 117 NA

我将出价购买最简单的。Dplyr的drop_na将删除包含na的所有行

data %>% drop_na()

您可以指定希望它查看哪些列(或不使用“-”)如果这与您的案例相关

有不同语言的数据帧,可能会提供更多的上下文。我认为您的代码唯一的问题是,您都使用管道
df
,并将其作为第一个参数。尝试从
filter()
内部移除
df,
,只需依靠管道即可。(或反之亦然)此函数使用Or条件运算符。然而,我想使用和条件。您的解决方案适用于此处给出的数据。但我无法应用于我拥有的大型数据帧。@BalachandarKaliappan这相当于公认的答案。因为,我是一个新手用户。我想,我无法理解代码的等价性。我非常感谢你在我的问题上的帮助。
df <- structure(list(S.No = 1:3, MediaName = c("Dat", "New", "Dat"), 
    KeyPress = c(NA, NA, NA), KPIndex = c(1L, NA, 2L), Type = c("Fixation", 
    "Saccade", "Fixation"), Secs = c(18L, 33L, 23L), X = c(117L, 
    NA, 117L), Y = c(89L, NA, NA)), class = "data.frame", row.names = c(NA, 
-3L))
data %>% drop_na()