【问题标题】:Using R cut function on dates在日期上使用 R 切函数
【发布时间】:2011-11-11 14:26:11
【问题描述】:

我有一个数据框提供体育赛事的出席情况

Crowd    matchDate
2345      1993-01-26
4567      1993-08-01
8888      1994-03-02
1298      1994-11-07
9876      1995-09-01 etc

1237      2011-09-09

matchdate 是一个 POSIXct 类

我希望能够根据日期创建一个季节因子,以便每个季节从 8 月 1 日到 7 月 31 日运行,例如因子 1992/3 将包括日期 1992-08-01 到 1993-07-31

理想情况下,我可以申请多个分析的函数,不一定在一年中具有相同的开始和结束日期

【问题讨论】:

  • 我不明白问题是什么。 cut 确实适用于 POSIXct 对象(或者,更准确地说,有一个专门用于 POSIXt 对象的 cut 版本)。它允许中断和标签规范。
  • 您是否只是将一年分成几个季度(冬季/春季/夏季/秋季)?您的示例是 1992 - 1993 年,比一年少 1 个月...正如 Brian 提到的,有 ?cut.POSIXct,您可以在其中设置 breaks="quarter"

标签: r date


【解决方案1】:

我的评论示例。

x <- as.Date(1:1000, origin = "2000-01-01")
x <- cut(x, breaks = "quarter") 

然后根据需要重新标记。

labs <- paste(substr(levels(x),1,4), "/", 1:4, sep="")
x <- factor(x, labels = labs)

?cut.POSIXct

休息
一个切点向量或数字,给出 x 将被切入的区间数或区间规范,一个 “秒”、“分钟”、“小时”、“日”、“DSTday”、“周”、“月”、“季度” 或“年”,可选地在一个整数和一个空格前面,或后面 由“s”。 (对于“日期”对象,只有使用“天”的间隔规范, 允许使用“周”、“月”、“季度”和“年”。)

【讨论】:

    【解决方案2】:

    如果您的问题与您如何自动生成中断和标签更相关,也许这会有所帮助

    DF <- data.frame(matchDate = as.POSIXct(as.Date(sample(5000,100,replace=TRUE), origin="1993-01-01")))
    
    years <- 1992:2011
    DF$season <- cut(DF$matchDate, 
      breaks=as.POSIXct(paste(years,"-08-01",sep="")),
      labels=paste(years[-length(years)],years[-length(years)]+1,sep="/"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2019-12-07
      • 2020-11-24
      • 2019-11-23
      • 1970-01-01
      • 2022-01-03
      • 2021-10-03
      相关资源
      最近更新 更多