【问题标题】:Filter specific rows过滤特定行
【发布时间】:2011-12-01 00:58:59
【问题描述】:

我有一个数据框(称为“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)

但它不起作用。

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

【问题讨论】:

    标签: r


    【解决方案1】:

    我相信%in% 运算符是您正在寻找的:

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

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 2012-04-22
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2015-08-24
      相关资源
      最近更新 更多