我有一个由每日值组成的数据集,大约20年。我必须选择几年,比如10年。我的数据集包含1996
到2013
的数据。我需要创建一个距离2004
到2013
只有10年的文件。
但是,我熟悉使用grep命令选择一个特定的年份。
Df <- Df[grep("2013", Df$Year), ]
是否可以同时选择几年。
我试过
Df[grep(c("2004", "2005", "2006"), Df$Year), ]
但这不起作用。
答案 0 :(得分:5)
Ya,把这些最后的数字放在一个字符类中。
Df <- Df[grep("201[345]", Df$Year), ]
这将选择2013
列中包含2014
,2015
,Year
个数字的行。
我需要创建一个从2004年到2013年只有10年的文件。
Df <- Df[grep("20(0[4-9]|1[0-3])", Df$Year), ]
答案 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]