【问题标题】:How to delete rows given conditions in R? [duplicate]如何删除R中给定条件的行? [复制]
【发布时间】:2018-08-06 10:39:54
【问题描述】:

所以我知道如何根据一列条件删除行。如何应对多种情况?

日期框架 = "旧数据"

Letter Number Color
X 1 Blue
Y 3 Red
Z 5 Yellow
D 1 Red
F 1 Yellow
X 2 Green

例如,要删除带有字母 X 的行和带有绿色的行,您可以这样做:

newdata <- subset(olddata, olddata$Letter != "X" & olddata$Color != "Green")

现在如何删除带有字母 F 且为黄色的行,即必须满足两个条件。

谢谢!

【问题讨论】:

  • 结合你的标准然后否定它 - olddata[!(olddata$Letter == "F" &amp; olddata$Color == "Yellow"),]
  • 已经看到了这个问题,但公式对我不起作用:
  • 试过 d
  • subset 肯定会允许多个条件 - subset(mtcars, cyl == 4 &amp; mpg &gt; 30) 是一个可重复的示例。
  • 仔细看。下面的答案与@thelatemail 给出的答案之间的区别在括号中。 thelatemail 正确地否定了整个条件,而下面的答案只对第一个词进行了否定。

标签: r


【解决方案1】:
newdata <- olddata[!(olddata$Letter == "F" & olddata$Color == "Yellow"),]

【讨论】:

  • 这将删除第 3 行和第 6 行。这就像我的旧公式一样。我只想删除第 6 行。
  • 如果您要使用subset,则无需每次都重新使用olddata$
  • @thelatemail,很高兴知道。我更喜欢 base R 并且我假设子集基本上以相同的方式运行,将我的答案更改为 base R。
  • 没问题。顺便说一下,subset 是基础 R,只是 R 提供的“非标准评估”功能。另外,我认为您需要否定整个选择 - 目前您保留“F”/“Yellow”行而不是删除它们。
  • 大声笑......是的......是的,我是。
【解决方案2】:

用途:

library(dplyr)

olddata %>%
filter(olddata, Letter!="F" & Color!="Yellow")

【讨论】:

  • 这没有给出正确的结果。
  • 你的意思是require(dplyr); df %&gt;% filter(!(Letter == "F" &amp; Color == "Yellow"));
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 2016-02-22
  • 2019-06-05
  • 2021-04-01
  • 2022-01-23
  • 2015-11-24
  • 2017-04-13
  • 1970-01-01
相关资源
最近更新 更多