数据是从CSV文件导入的,日期最初是字符形式的。我把它们分别变异了,因为我想对它们做一些进一步的分析。
这是我能找到的唯一一个关于这个主题的问题,答案很复杂,因为需要考虑到1970年以前的日期,但我的数据是最近几年的,所以这不是一个考虑。
EARLIEST_DATE <- c(06/07/2021, 15/11/2019, 01/10/2019, 24/09/2019, 10/11/2020, 21/09/2021, 21/07/2020, 18/10/2022, 05/10/2021, 22/10/2021)
LATEST_DATE <- c(28/09/2021, 20/12/2019, 31/03/2020, 18/09/2020, 15/06/2021, 28/06/2022, 04/09/2020, 28/02/2023, 02/11/2021, 08/07/2022)
library(dplyr)
df <- data.frame(EARLIEST_DATE, LATEST_DATE)
df %>%
mutate(EARLIEST_DATE = as.Date(EARLIEST_DATE,'%d/%m/%Y'),
LATEST_DATE = as.Date(LATEST_DATE,'%d/%m/%Y'))
df %>%
summarise(weeks = ceiling(as.numeric(difftime(EARLIEST_DATE, LATEST_DATE, units = "weeks"))))
我得到以下结果:
1 -1157
2 -265
3 78
4 209
5 -239
6 -352
7 774
8 970
9 152
10 744
我不明白为什么它给出的值如此不正确。
它们应该都是正的,没有一个间隔超过一年,所以它甚至不像是用天来表示差异。天花板子句是这样的:对于周,返回的值至少为1。
我可以在Excel中很好地计算差异,但是文件太大了,每当我尝试做任何事情时都会崩溃,因此使用r。
尝试在计算之前将它们解析为字符串。使用润滑的dmy()
来解析日-月-年格式的字符串,我似乎得到了一个更合理的输出。
library(dplyr)
library(lubridate)
EARLIEST_DATE <- dmy(c("06/07/2021", "15/11/2019", "01/10/2019", "24/09/2019", "10/11/2020", "21/09/2021", "21/07/2020", "18/10/2022", "05/10/2021", "22/10/2021"))
LATEST_DATE <- dmy(c("28/09/2021", "20/12/2019", "31/03/2020", "18/09/2020", "15/06/2021", "28/06/2022", "04/09/2020", "28/02/2023", "02/11/2021", "08/07/2022"))
df <- tibble(EARLIEST_DATE, LATEST_DATE)
df %>%
reframe(weeks = ceiling(as.numeric(difftime(LATEST_DATE, EARLIEST_DATE, units = "weeks"))))
#> # A tibble: 10 x 1
#> weeks
#> <dbl>
#> 1 12
#> 2 5
#> 3 26
#> 4 52
#> 5 31
#> 6 40
#> 7 7
#> 8 19
#> 9 4
#> 10 37
创建于2023-04-12 with reprex v2.0.2