如何从包含数年的数据集中选择几年

时间:2015-09-24 08:04:28

标签: r

我有一个由每日值组成的数据集,大约20年。我必须选择几年,比如10年。我的数据集包含19962013的数据。我需要创建一个距离20042013只有10年的文件。

但是,我熟悉使用grep命令选择一个特定的年份。

Df <- Df[grep("2013", Df$Year), ] 

是否可以同时选择几年。

我试过

Df[grep(c("2004", "2005", "2006"), Df$Year), ] 

但这不起作用。

3 个答案:

答案 0 :(得分:5)

Ya,把这些最后的数字放在一个字符类中。

Df <- Df[grep("201[345]", Df$Year), ] 

这将选择2013列中包含20142015Year个数字的行。

  

我需要创建一个从2004年到2013年只有10年的文件。

Df <- Df[grep("20(0[4-9]|1[0-3])", Df$Year), ] 

DEMO

答案 1 :(得分:4)

也许这可能会有所帮助:

Df <- Df[(as.numeric(Df$Year) >= 2004) & (as.numeric(Df$Year) <= 2013),]

或以更紧凑的形式,如@DavidArenburg所建议的那样:

Df <- Df[as.numeric(Df$Year) %in% 2004:2013, ]

答案 2 :(得分:2)

为什么在使用子集或任何其他选项时使用grep?

subset(DF, Year >= 2004 & Year <= 2013)

或从dplyr过滤

library(dplyr)
DF %>% filter(Year >= 2004 & Year <= 2013)
如果您使用此软件包,请使用

或data.table:

library(data.table)
setDT(DF)[Year >= 2004 & Year <= 2013]