【发布时间】:2019-06-11 18:48:52
【问题描述】:
我有一个数据框,我想根据特定列中的值从中删除行。 例如,数据框如下所示:
a b c d
1 1 2 3 0
2 4 NA 1 NA
3 6 4 0 1
4 NA 5 0 0
我想删除 d 列中值大于 0 的所有行。我一直在尝试使用以下代码来执行此操作:
df <- df[!df$d > 0, ]
但这似乎具有删除所有值的效果,即 d 列中具有 NA 值的行。我假设需要 na.rm = TRUEargument,但我不确定在上面的函数中放置它的位置。
干杯, 蚂蚁
【问题讨论】:
-
尝试使用
df[!(df$d > 0 & !is.na(df$d)), ]或使用filterfromdplyr即df %>% filter(!d > 0) -
@akrun 这两种方法我都试过了。在每一个中,代码似乎都删除了 d 列中值 >0 的所有行和 d 列中所有具有 NA 的行。有一种方法可以保留 col d = NA 的值(上例中的第 1,2 和 4 行)。
-
好吧,我想我认为你的情况不同。你需要
is.na中的相反条件@ -
@RonakShah 代码看起来已成功删除所有“>0”行,但似乎已将数据框中 d = NA 到 NA 的所有其他值转换为 NA
-
@Ant 似乎可以在未更改任何信息的情况下共享示例数据。您可以在下面查看我的答案。