首页 > 解决方案 > 在R中按月和年选择数据

问题描述

我有一个按月和年排序的数据框。我只想选择整数年,即如果数据从 2002 年 7 月开始,到 2010 年 9 月结束,那么只选择 2002 年 7 月到 2010 年 6 月的数据。如果数据从 1992 年 9 月开始,到 2000 年 3 月结束,那么只选择从 1992 年 9 月到 1999 年 8 月的数据。无论其间缺失的月份如何。

数据可以从以下链接上传: 在此处输入链接描述

编码

mydata <- read.csv("E:/mydata.csv", stringsAsFactors=TRUE)

这是手动选择

selected.data <- mydata[1:73,]   # July 2002 to June 2010 

如何通过编码来实现。

标签: rselect

解决方案


这是一个基本解决方案,可重现您的手动子集:

mydata <- read.csv("D:/mydata.csv", stringsAsFactors=F)
lookup <-
  c(
    January = 1,
    February = 2,
    March = 4,
    April = 4,
    May = 5,
    June = 6,
    July = 7,
    August = 8,
    September = 9,
    October = 10,
    November = 11,
    December = 12
  )
mydata$Month <- unlist(lapply(mydata$Month, function(x) lookup[match(x, names(lookup))]))

first.month <- mydata$Month[1]
last.year <- max(mydata$Year)
mydata[1:which(mydata$Month==(first.month -1)&mydata$Year==last.year),]

基本上,我将月份名称转换为数字,并找到数据框中出现的第一个月之前的月份,即数据框的最后一年。


推荐阅读