【问题标题】:Extract month over several years with lubridate用 lubridate 提取数年的月份
【发布时间】:2017-01-01 09:14:01
【问题描述】:

在 lubridate 中提取月份很简单:month(some_date),这给出了1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5...

但是,如果我需要确定几年的月份数才能获得 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16... 怎么办?有没有办法在lubridate(或使用 R 基础)中实现这一点?谢谢

我试过了

Day <- c('2015/01/01', '2015/03/01', '2015/07/25', '2016/03/05', '2016/11/28')
Day <- date(Day)
Month <- Day - min(Day)
Month <- ((Month/ddays(1))/30.41)+1
Month <- trunc(Month)

但它显然给出了一个糟糕的月份近似值(1 2 7 15 23 --March 1st, 2015 被认为属于第 2 个月)。

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    您可以做的是从日期的年份中减去第一年,然后将其乘以 12,然后将其添加到 month(Day) 的输出中。这将为第一年添加0,为第二年添加12,依此类推。

    使用:

    month(Day) + (year(Day) - min(year(Day)))*12
    

    给予:

    [1]  1  3  7 15 23
    

    在基础 R 中,您可以按以下方式进行操作(@DavidArenburg 也建议):

    mnths <- as.POSIXlt(Day)
    mnths$mon + 1 + (mnths$year - min(mnths$year)) * 12
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多