我想省略数据框中在特定列(y)中具有NA的行。
我正在使用df<- [!is.na (df$y), ]
这让我:错误:'df&lt; - [“中出现意外'''
我尝试了df<- [(!is.na (df$y)), ]
同样的错误。有人可以帮我弄清问题是什么。感谢。
答案 0 :(得分:2)
您可以按如下方式使用na.omit删除所有具有NA的行,而不管列是什么:
df <- na.omit(df)
如果您只想从特定列中与NA相关的数据框中删除行,请使用以下命令:
df <- df[!(is.na(df$y)),]
您几乎已经使用了第二个代码段,但您需要将感叹号移到括号外。
答案 1 :(得分:2)
尝试使用subset
功能。
subset(DF, !is.na(y))
如果您使用的是data.frame
,那么DF
在子集化后可能会有空级别;未使用的级别不会自动删除。有关从数据框中删除所有未使用级别的方法,请参阅droplevels
。
答案 2 :(得分:1)
使用dplyr:
library(dplyr)
df <- df %>% filter(!is.na(y))
使用data.table:
library(data.table)
setDT(df)
df <- df[!is.na(y), ]
正如@Arun评论的那样,在data.table
v1.9.5 +中你可以使用na.omit(dt, cols="y")