我的数据如下:
data <- structure(list(year = c(2019L, 2019L, 2019L, 2019L, 2019L, 2020L,
2020L, 2020L, 2020L, 2020L), group = c("A", "A", "A", "B", "B",
"A", "A", "B", "B", "B"), date = c("2019-07-15", "2019-07-25",
"2019-08-01", "2019-07-15", "2019-07-30", "2020-08-01", "2020-08-03",
"2020-08-01", "2020-08-20", "2020-08-25")),
class = "data.frame", row.names = c(NA,
-10L))
我想计算每个小组自上一个日期以来每年经过的天数。当我尝试这样做时,输出不是对数据进行分组。例如,输出会将组 B 2019-07-15 和组 A 2019-08-21 之间的天数计算为负值,而不是计算自每个日期 WITHIN 组以来经过的天数。
我尝试了以下代码,这导致了我在上面描述的问题:
library(dplyr)
data %>%
arrange(year, group, date) %>% # To ensure dates are in chronological order within each group
mutate(date = as.Date(date)) %>%
group_by(year, group)%>%
mutate(Difference = difftime(date, lag(date), units = "days"))
提前谢谢!
以下是使用< code>lubridate包中的< code>interval函数的替代方法:
注:
interval(lag(date,default = date[1]), date) %>%
as.numeric('days')
法典:
library(lubridate)
library(dplyr)
data %>%
mutate(date = ymd(date)) %>%
group_by(group) %>%
mutate(difference = interval(lag(date,default = date[1]), date) %>% as.numeric('days'))
year group date difference
<int> <chr> <date> <dbl>
1 2019 A 2019-07-15 0
2 2019 A 2019-07-25 10
3 2019 A 2019-08-01 7
4 2019 B 2019-07-15 0
5 2019 B 2019-07-30 15
6 2020 A 2020-08-01 366
7 2020 A 2020-08-03 2
8 2020 B 2020-08-01 368
9 2020 B 2020-08-20 19
10 2020 B 2020-08-25 5
尝试以下操作。对代码的微小更改会产生影响。
suppressPackageStartupMessages(library(dplyr))
data %>%
mutate(date = as.Date(date)) %>%
group_by(group)%>%
arrange(group, date) %>%
mutate(Difference = difftime(date, lag(date), units = "days"))
#> # A tibble: 10 × 4
#> # Groups: group [2]
#> year group date Difference
#> <int> <chr> <date> <drtn>
#> 1 2019 A 2019-07-15 NA days
#> 2 2019 A 2019-07-25 10 days
#> 3 2019 A 2019-08-01 7 days
#> 4 2020 A 2020-08-01 366 days
#> 5 2020 A 2020-08-03 2 days
#> 6 2019 B 2019-07-15 NA days
#> 7 2019 B 2019-07-30 15 days
#> 8 2020 B 2020-08-01 368 days
#> 9 2020 B 2020-08-20 19 days
#> 10 2020 B 2020-08-25 5 days
< sup >由reprex软件包(v2.0.1)于2022-06-10创建
我的数据如下: 我想计算每个组每年日期之间的平均天数。我尝试了以下代码,但收到以下错误: 我的日期列的类别是日期。
问题 你需要找出两个日期间隔了几年,几个月,几天,几个小时,几分钟,几秒。 解决方案 利用 JavaScript 的日期计算函数 getTime() 。它提供了从 1970 年 1 月 1 日开始经过了多少毫秒。 DAY = 1000 * 60 * 60 * 24 d1 = new Date('02/01/2011') d2 = new Date('02/06/2011') days_pas
我需要计算JPA中2个日期之间的天数。 例如: 到目前为止,我试着: 你会怎么做?
我试图计算可能的成对数,这可以通过从两个集合中获取值来实现。没有人停下来Rest。我还尝试使用JavaSet实现它。但我陷入了逻辑,如何计算这种可能的组合。 问题示例: 这里,可能的对组合是 [0,2] , [0,3] , [1,2] , [1,3] , [4,2] , [4,3] 代码如下: 输入可能在某个级别上有所不同,如下所示 这里,可能的对组合是[0,1]、[0,3]、[2,1]、[2,3
我有以下数据帧(示例): 我想创建一个名为“斜率”的列,它显示每组每n(n=3)天的斜率。这意味着当第一个日期是“2022-09-01”和3天后用于计算时。斜率可以使用“diff_days”(通过与每组第一个值的差异计算)和“值”列来计算。以下是所需的输出: 以下是一些示例计算,可为您提供一个想法: A组前3天:斜率([0,1,3],[2,1,3])=0.43 A组3天后:斜率([5,6,6],[
问题内容: 我编写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别是2/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时