过滤特定行

时间:2011-10-04 21:28:41

标签: r

我有一个数据框(称为“data.set.y”)。我想得到这个数据框的子集(我称之为data.frame.y.p1)。该子集包含“实体”一栏中包含字符串1990或1991或1992或1993或1994或1995或1996或1997或1998或1999的所有行

我使用以下代码获得了正确的子集:

data.set.y.p1 <- subset(data.set.y, substring(data.set.y$Entity, 13,16) == 1990 | substring(data.set.y$Entity, 13,16) == 1991 |
                                    substring(data.set.y$Entity, 13,16) == 1992 | substring(data.set.y$Entity, 13,16) == 1993 |
                                    substring(data.set.y$Entity, 13,16) == 1994 | substring(data.set.y$Entity, 13,16) == 1995 |
                                    substring(data.set.y$Entity, 13,16) == 1996 | substring(data.set.y$Entity, 13,16) == 1997 |
                                    substring(data.set.y$Entity, 13,16) == 1998 | substring(data.set.y$Entity, 13,16) == 1999)

现在我想用更优雅的东西替换这个长代码。我已经尝试了以下内容:

years <- c(1990:1999)
data.set.y.p1 <- subset(data.set.y, substring(data.set.y$Entity, 13,16) == years)

但它不起作用。

有没有人知道如何摆脱所有这些单一条件?

1 个答案:

答案 0 :(得分:3)

我相信%in%运算符正是您所需要的:

data.set.y.p1 <- subset(data.set.y, substring(data.set.y$Entity, 13,16) %in% years)