5

这似乎是一个简单的任务,但我很难执行它以及找到它如何在 R 中完成的示例。

我有一个包含大约 75K 记录的数据框。一个领域有日期,它可以追溯到大约 11 年。我用下面的代码去掉了小时分钟秒,所以我只有年月日

 dat$date=round.POSIXt(dat$date,units="day")

我现在正在尝试根据日期创建一个新字段“FiscalYear”,这样如果日期在 2008 年 7 月 1 日和 2009 年 6 月 30 日之间,它将被分配 FY09 ......然后在 2009 年 7 月 1 日和 2010 年之间- 06-30它被分配到FY10,等等......

我一直在尝试的方法是 ifelse 使用 >= && <= 来设置日期范围,但这不起作用。有什么想法吗?

4

1 回答 1

8

基本上,本所说的。这是一个在实践中会是什么样子的例子。(我使用了一个Date类对象,因为听起来你不需要小时/分钟/秒信息。)

date <- seq(from = as.Date("2010/5/30"), by="week", length=10) ## Example data

cuts <- seq(from = as.Date("2000/7/1"), by="year", length=13) 
labs <- paste0("FY", 1:12)

cut(date, breaks = cuts, labels = labs)
#  [1] FY10 FY10 FY10 FY10 FY10 FY11 FY11 FY11 FY11 FY11
# Levels: FY1 FY2 FY3 FY4 FY5 FY6 FY7 FY8 FY9 FY10 FY11 FY12
于 2012-10-11T17:03:04.737 回答