【问题标题】:R: find first and last date in time dataR:查找时间数据中的第一个和最后一个日期
【发布时间】:2013-07-10 14:24:42
【问题描述】:

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

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。

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

我希望它现在更清楚了!

【问题讨论】:

  • 问题不清楚。预期的结果是什么?你想要每一年的愤怒吗?

标签: r


【解决方案1】:

使用提供的数据,这应该将 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!

【讨论】:

  • 是的!这正是我想要的!谢谢!为了后代,我通过将 [1] 替换为 [length(dates)] 找到了最新日期
  • 感谢 thelatemail。我发现在格式化日期而不填充零的情况下,必须使用格式字符串“%Y%m%d”。即 2011 年 5 月 1 日。
【解决方案2】:

只需使用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"

【讨论】:

  • 您好,感谢您的帮助,您的回答实际上帮助我找到了另一个问题的解决方案(所有调查的平均天数差异),但没有回答我的第一个问题。我无法解释我真正想要什么,所以我编辑了我的问题。
【解决方案3】:
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))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多