根据向量中的值过滤数据框行
当要删除的值存储在向量中时,从数据框中过滤行的最佳方法是什么?就我而言,我有一个包含日期的列,并且想要删除几个日期。
我知道如何使用 !=
删除与 one 天相对应的行,例如:
m[m$date != "01/31/11", ]
要删除向量中指定的多个日期,我尝试过:
m[m$date != c("01/31/11", "01/30/11"), ]
但是,这会生成警告消息:
Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod
应用基于多个值的过滤器的正确方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
nzcoops 的建议很正确。我不久前在 R Chat 中提出了这个问题,Paul Teetor 建议定义一个新函数:
然后可以按如下方式使用它:
不用说,这个小宝石现在在我的 R 个人资料并且经常使用。
nzcoops is spot on with his suggestion. I posed this question in the R Chat a while back and Paul Teetor suggested defining a new function:
Which can then be used as follows:
Needless to say, this little gem is now in my R profile and gets used quite often.
我想为此你想要:
I think for that you want:
很酷的方法是使用 Negate 函数来创建新的:
然后您可以使用它来查找不相交的元素
cool way is to use Negate function to create new one:
than you can use it to find not intersected elements
针对上面的一些问题,这里有一个符合
tidyverse
的解决方案。我使用 dplyr 中的 anti_join 来达到相同的效果:In regards to some of the questions above, here is a
tidyverse
compliant solution. I usedanti_join
fromdplyr
to achieve the same effect: