如何在data.table中选择未清理数据的年份范围?

时间:2015-09-21 10:05:11

标签: r data.table

我的部分数据采用以下格式:

                     Year  Persons
1:                   2014       69
2:                   2013       76
3:     2013 couldn't come        3
4:                   2012       48
5:                   2011       57
6:                               1

如您所见,Year列中的数据不干净。当我想从2011年到2014年选择年份的行时,以下代码有效:

DF[Year %in% c("2014", "2013", "2012", "2011") ]

选择一年的范围:

DF[Year >= 2011 and Year <= 2014] # This won't filter out the row like `2013 couldn't come`.

如果我们选择所有常规年份(用其他文本除去年份,以及空白年份),我想我可以使用正则表达式:

DF[ Year == '[0-9]{4}',]    # doesn't work.

然而,它不起作用。如何在data.table中使用正则表达式?

  1. 选择年份范围;
  2. 过滤掉不整洁的年份。

2 个答案:

答案 0 :(得分:3)

如果你真的只想做#1&amp; #2并没有清理数据:

dat[grepl("^201[1-4]$", Year)]

答案 1 :(得分:2)

你可以抽出几年:

operator+=