R 移除NA和x27;在数据帧的几列上使用筛选函数
我有一个很大的数据框,在不同的点上有NA。我需要删除几个具有更多NA值的行 我应用了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
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()