3

我有一个包含日期的数据框,我需要找到第一个和最后一个日期,不包括年份。我的日期有一部分:

2003-09-27
2004-09-17
2005-09-23
2006-09-21
2007-09-20
2008-09-26
2009-10-11
2010-09-28
2011-09-01

为了确保用英语翻译我想要的东西,我会把它放在问题的形式中。

那将像这样回答这个问题:-在所有调查中,您是哪一年开始计算较早的?- 那是 2004 年的 09-17。

我怎么能找到这个日期?

谢谢你的帮助!

编辑 我尝试自动查找哪个日期是我所有调查中较早的日期。这些日期是计数天数,我需要找出计数会话最早开始的年份。我不是在寻找最广泛的范围。我想我需要摆脱这一年才能找到这个。似乎我无法将年份分开并保留日期格式,因为当我打印“月日”部分时,它会自动添加 2013。

我的问题的第二部分是:找到这个日期后,我如何调用整个日期(带年份),因为它在我的条目数据框中?

我希望它现在更清楚!

4

3 回答 3

6

使用提供的数据,这应该将 2011 年 9 月 1 日确定为最早的日期(而不是 2004 年 9 月 17 日)。

dates <- c("2003-09-27", "2004-09-17", "2005-09-23", "2006-09-21", 
           "2007-09-20", "2008-09-26", "2009-10-11", "2010-09-28", 
           "2011-09-01")

dates[order(format(as.Date(dates),"%m%d"))[1]]
#[1] "2011-09-01"
# it works!
于 2013-07-11T09:53:10.753 回答
4

只需使用range,无需转换为日期:

dates <- c("2003-09-15", "2002-04-04", "2002-11-17", "2005-09-23", 
           "2013-03-03", "2005-08-04", "2011-05-05", "2013-08-08", "2013-01-04")

# Find which years we have
years <- strftime(dates, "%Y")

res <- sapply(unique(years), function(y){
      # Find which days are in the specific year we're looking at
      idx <- which(years==y); 
      # Return the range
      return(range(dates[idx]));
      })

> res
     2003         2002         2005         2013         2011        
[1,] "2003-09-15" "2002-04-04" "2005-08-04" "2013-01-04" "2011-05-05"
[2,] "2003-09-15" "2002-11-17" "2005-09-23" "2013-08-08" "2011-05-05"
于 2013-07-10T14:45:27.270 回答
-1
dates <- structure(c(12322, 12678, 13049, 13412, 13776, 14148, 14528, 
                 14880, 15218), class = "Date")

md <- (as.numeric(format(dates, "%m%d")))
dates[c(which.min(md), which.max(md))]
于 2013-07-10T14:34:28.353 回答