r-用套子或套子计算日期差异

  • 本文关键字:日期 计算 r loops date lapply
  • 更新时间 :
  • 英文 :


这是我的数据集的快照。这是我的分析目标。

  1. 我想为sic代码过滤我的数据集
  2. 我想计算两个日期之间的差异,并将其放入数据集中
sic | Announcement_date
---  -------------------
13  | 2018-09-11
19  | 2014-06-11
92  | 2011-10-14
131 | 2010-07-02
131 | 2011-02-16
131 | 2011-10-12

因此,对于这个例子,我的预期输出是:

sic | Announcement_date  | Difference
---  -------------------  ------------
13  | 2018-09-11          NA
19  | 2014-06-11          NA
92  | 2011-10-14          NA
131 | 2010-07-02          NA
131 | 2011-02-16          229 days
131 | 2011-10-12          #etc...

由于我是R的新手,我不知道如何做到这一点。有人能帮我吗?

非常感谢您的支持。

确保日期为POSIXct格式,然后可以使用diff来获取日期之间的差异。只需group_by(sic),并确保在每组的开头添加一个额外的NA,因为在diff中没有可比较的第一个条目

library(dplyr)
df %>%
mutate(Announcement_date = as.POSIXct(Announcement_date)) %>%
group_by(sic) %>%
mutate(difference = c(NA, diff(Announcement_date)))
#> # A tibble: 6 x 3
#> # Groups:   sic [4]
#>     sic Announcement_date   difference
#>   <int> <dttm>                   <dbl>
#> 1    13 2018-09-11 00:00:00         NA
#> 2    19 2014-06-11 00:00:00         NA
#> 3    92 2011-10-14 00:00:00         NA
#> 4   131 2010-07-02 00:00:00         NA
#> 5   131 2011-02-16 00:00:00        229
#> 6   131 2011-10-12 00:00:00        238

数据

df <- structure(list(sic = c(13L, 19L, 92L, 131L, 131L, 131L), 
Announcement_date = c("2018-09-11", 
"2014-06-11", "2011-10-14", "2010-07-02", "2011-02-16", "2011-10-12"
)), class = "data.frame", row.names = c(NA, -6L))

创建于2022-02-11由reprex包(v2.0.1(

相关内容

  • 没有找到相关文章

最新更新