【发布时间】:2011-10-02 19:00:09
【问题描述】:
我要删除数据框中某行符合字符串匹配条件的所有行吗?
例如:
A,B,C
4,3,Foo
2,3,Bar
7,5,Zap
我将如何返回一个排除 C = Foo 的所有行的数据框:
A,B,C
2,3,Bar
7,5,Zap
【问题讨论】:
我要删除数据框中某行符合字符串匹配条件的所有行吗?
例如:
A,B,C
4,3,Foo
2,3,Bar
7,5,Zap
我将如何返回一个排除 C = Foo 的所有行的数据框:
A,B,C
2,3,Bar
7,5,Zap
【问题讨论】:
只需使用带有否定符号 (!) 的 ==。如果 dtfm 是您的 data.frame 的名称:
dtfm[!dtfm$C == "Foo", ]
或者,在比较中移动否定:
dtfm[dtfm$C != "Foo", ]
或者,使用subset() 更短:
subset(dtfm, C!="Foo")
【讨论】:
dftm[dtfm$C != "Foo", ],它是一样的,但更容易阅读。
subset(dftm, C!="Foo")
您可以使用dplyr 包轻松删除这些特定行。
library(dplyr)
df <- filter(df, C != "Foo")
【讨论】:
我在数据框中有一列 (A),其中包含 3 个值(是、否、未知)。我只想过滤那些值为“是”的行,这是代码,希望这对你们也有帮助——
df <- df [(!(df$A=="no") & !(df$A=="unknown")),]
【讨论】:
如果你想使用 dplyr,删除行“Foo”:
df %>%
filter(!C=="Foo")
【讨论】:
我知道这个问题已经得到解答,但如果有人能从中获得帮助,就这样做
库 (dplyr) df %>% 过滤器(!c=="foo)
df[!df$c=="foo", ]
【讨论】: