r-如何计算第一年的重现月份

  • 本文关键字:第一年 何计算 计算 r date
  • 更新时间 :
  • 英文 :


我想给自第一年以来重复出现的月份分配数字。lubridate软件包具有month,该软件包计算一年中最多12个月的月份,即


month(e$date)
[1]  1  2  3  4  5  6  7  8  9 10 11 12 1 2  3  4  5  6  7  8  9 10 11 12  1  2  3  4  5  6

然而,我正在寻找这样的东西:

month  date
1  2019-01-1
2  2019-02-1
3  2019-03-1
4  2019-04-1
5  2019-05-1
6  2019-06-1
7  2019-07-1
8  2019-08-1
9 2019-09-1
10 2019-10-1
11 2019-11-1
12 2019-12-1
13 2020-01-1
14 2020-02-1
15 2020-03-1
16 2020-04-1
17 2020-05-1
18 2020-06-1
19 2020-07-1
20 2020-08-1
21 2020-09-1
22 2020-10-1
23 2020-11-1
24 2020-12-1
25 2021-01-1
26 2021-02-1
27 2021-03-1
28 2021-04-1
29 2021-05-1
30 2021-06-1
month(e$date)
[1]  1  1  2  3  4  5  6  7  8  9 10 11 12  2  3  4  5  6  7  8  9 10 11 12  5
[26]  3  2  4  1  6

当下一年到来时,有没有办法让数字从12继续下去?当然,当有一个更大的数据集,日期分散时,这会更复杂,所以我如何才能根据最早的年份来实现这一点;月

一些可重复的日期:

structure(list(date = structure(c(18262, 17897, 17928, 17956, 
17987, 18017, 18048, 18078, 18109, 18140, 18170, 18201, 18231, 
18293, 18322, 18353, 18383, 18414, 18444, 18475, 18506, 18536, 
18567, 18597, 18748, 18687, 18659, 18718, 18628, 18779), class = "Date")), class = "data.frame", row.names = c(NA, 
-30L))

假设一个月有30天,您可以减去所有具有最小值的日期。

round(as.numeric(df$date - min(df$date))/30)

如果您知道您有月度数据,则每个月都有一个条目,您可以对数据进行排序并创建序列列。

df <- df[order(df$date), , drop = FALSE]
df$month <- 1:nrow(df)

dplyr中,这将是-

library(dplyr)
df %>% arrange(date) %>% mutate(month = row_number())

我们可以使用data.table

library(data.table)
setDT(d)[order(date), month = .I]

相关内容

  • 没有找到相关文章

最新更新