如何在R中使用带例外的过滤器/子集?

时间:2017-02-15 15:09:15

标签: r filter subset

例如,我有一个看起来像

的数据集
print(x)



Age   Hometown     
22    New York
24    Houston
26    Ney York
27    Chicago
30    Washington

问题例如:此人必须年龄不超过28岁但超过24岁,except家乡的人是纽约。 问题的第一部分我会这样回答

xnew <- subset(x, Age > 28 & Age < 24),但我怎样才能解决这个问题的第二部分?

5 个答案:

答案 0 :(得分:1)

xnew <- subset(x, Age > 28 & Age < 24 & Hometown != New York)

答案 1 :(得分:1)

如果我理解正确,您希望年龄超过24岁且年龄小于28岁的所有人都不论年龄大小都住在纽约。

xnew <- subset(x, Age > 24 & Age < 28 | Hometown == New York)

答案 2 :(得分:0)

构建子集,请记住:

  • 如果希望变量采用特定值(例如“纽约”):

subset(x, Hometown=="New York")

  • 如果您希望变量不采用特定值(例如“纽约”)

subset(x, Hometown!="New York")

重要:给定值,如果是字符,则在“”之间,如果需要,则值等于(==),如果不需要(!=)< / p>

答案 3 :(得分:0)

对于您的陈述“此人必须未满28岁但超过24岁”,以下应为代码

xnew <- subset(x, Hometown == "New York" & Age < 28 & Age > 24)

答案 4 :(得分:0)

我不确定你的措辞,但听起来你想抓住年龄介于24到28之间的行,除非家乡是纽约,在这种情况下,无论年龄如何,都要抓住那一行。如果这是正确的,那么您可以使用:

xnew <- subset(x, Age < 28 & Age > 24 | Hometown == "New York")