R difftime()产生不正确的间隔



数据是从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

最新更新