从财政月份开始提取年份月份

时间:2016-06-02 19:15:45

标签: r date time financial

我有一个包含11个变量和近10万个obs的数据框。

'July 2010/11', 'Aug 2010/11', 'Sep 2010/11', 'Oct 2010/11', 'Dec 2010/11'
'Jan 2010/11','Feb 2010/11' , 'Mar 2010/11', 'Apr 2010/11','May'2010/11','June 2010/11

我的财政月份从7月开始,到明年6月结束。在这里,我的财政年度从2010年7月开始,到2011年6月结束。我想将这些月 - 金融年份时间转换为月 - 实际年份。

喜欢' 2010年7月11日'到2010年7月 ' 2010年1月11日'到2011年1月 我根据财政年度重新调整我的OM变量

levels(mydata$OM)<-c('July','Aug','Sep','Oct','Nov','Dec','Jan','Feb','Mar','Apr','May','Jun')

enter image description here

我想要做的是,我想将FY和OM变量合并为一个变量,如果它是2010年7月11日,它只需要2010年7月,如果它的2010年1月11日它将成为2011年1月我试过下面的代码,但它没有正常工作,因为它给了我不正确的结果

for(i in 1:NROW(mydata))
{
if(SD[i,3]=='2010/11'| SD[i,3]=='2011/12' | SD[i,3]=='2012/13'
   |SD[i,3]=='2013/14' | SD[i,3]=='2014/15' | SD[i,3]=='2015/16' & SD[i,4] %in% c('July','Aug','Sep','Oct','Nov','Dec'))
 {
  SD[i,12] <- paste(sortedData[i,4],sortedData[i,3],sep = ' ')
  SD[i,12]<- str_sub(string =SD[i,12] , start = 1, end = -4)
}
else{
  SD[i,12] <-paste(sortedData[i,4],sortedData[i,3],sep = ' ')
  SD[i,12] <-str_replace(string = SD[i,12], pattern = '\\d{4}/',replacement = '20')   
}
}

1 个答案:

答案 0 :(得分:0)

如果你有表中显示的数据,你可以在FY上使用ifelse语句然后使用substr()。

 mydata$year <- ifelse(as.numeric(mydata$OM) < 7,
     substr(mydata$FY, 1, 4),
     paste0("20", substr(mydata$FY, 6, 7)))

如果您的问题更具可重复性,我可以对其进行测试,否则您需要自行调整。