【问题标题】:how to create 2 columns based on dates in R?如何根据 R 中的日期创建 2 列?
【发布时间】:2019-01-23 20:23:38
【问题描述】:

我想根据“dtcoleta”列的月份和年份确定类别,1 列基于分类为 1 或 2 的月份(11 月至 3 月 = 1)和(4 月至 10 月 = 2),以及另一列基于年份(2013、2014、2015、2016 等)

我有不同年份和月份的收集日期想按这些条件排序第1年或第2年或收集年份。

dtcoleta est_col year_col

03/02/13 2013 年 3 月 2 日 2014 年 4 月 13 日 2013 年 1 月 29 日 2014 年 3 月 9 日 2015 年 2 月 22 日 2013 年 3 月 2 日 2016 年 1 月 29 日 2013 年 3 月 2 日 2013 年 9 月 14 日 2015 年 8 月 3 日 2016 年 7 月 12 日 2014 年 1 月 29 日 2013 年 8 月 3 日 2013 年 3 月 2 日 2013 年 7 月 12 日 2013 年 1 月 29 日 2014 年 6 月 12 日 2013 年 4 月 13 日 2016 年 3 月 2 日 2013 年 7 月 12 日 2015 年 10 月 19 日


================================================ ==========================

【问题讨论】:

    标签: r


    【解决方案1】:

    lubridate 库和 dplyr 库在这里会很有帮助。您可以使用 lubridate 来获取日期的年份:

    year(somedate)
    

    您可以使用 case_when() 语句以及 lubridate 的 month() 函数来获取基于月份的一列和二列:

    mutate(dtcoleta,
           newcolumn = case_when(month(est_col) >= 11 | month(est_col) <= 3 ~ 1,
                                 month(est_col) >= 4 & month(est_col) <= 10 ~ 2)
    

    这段代码说“当month(est_col)的结果大于或等于11或小于或等于3时,将newcolumn设置为1;当month(est_col)在4和10之间时,设置它等于2.

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2020-09-08
      • 2022-11-12
      • 2018-07-05
      • 1970-01-01
      • 2021-03-31
      相关资源
      最近更新 更多