省略行错误

时间:2015-06-16 15:13:17

标签: r

我想省略数据框中在特定列(y)中具有NA的行。 我正在使用df<- [!is.na (df$y), ] 这让我:错误:'df&lt; - [“中出现意外''' 我尝试了df<- [(!is.na (df$y)), ]同样的错误。有人可以帮我弄清问题是什么。感谢。

3 个答案:

答案 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")