这是我的数据集的快照。这是我的分析目标。
- 我想为sic代码过滤我的数据集
- 我想计算两个日期之间的差异,并将其放入数据集中
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(