按组从上一行中减去日期(使用R)
我有一个类似于这个()的问题,但我想用组ID从当前日期中减去前一个日期,以得到估计的天数。我试着编辑之前建议的脚本,将“value”替换为 “日期”。 虽然我尝试了不同的建议方法,但我一直收到错误消息“在mutate_impl(.data,dots)中出错”: 计算错误:无法为签名“POSIXct”的函数优先找到继承的方法 我想要这种桌子按组从上一行中减去日期(使用R),r,dataframe,dplyr,lag,R,Dataframe,Dplyr,Lag,我有一个类似于这个()的问题,但我想用组ID从当前日期中减去前一个日期,以得到估计的天数。我试着编辑之前建议的脚本,将“value”替换为 “日期”。 虽然我尝试了不同的建议方法,但我一直收到错误消息“在mutate_impl(.data,dots)中出错”: 计算错误:无法为签名“POSIXct”的函数优先找到继承的方法 我想要这种桌子 Data id date date_difference(in days) 2380 10/30/12 0 2380
Data
id date date_difference(in days)
2380 10/30/12 0
2380 10/31/12 1
2380 11/1/12 2
2380 11/2/12 3
20100 10/30/12 0
20100 10/31/12 2
20100 11/1/12 3
20100 11/2/12 4
20103 10/30/12 0
20103 10/31/12 1
库(tidyverse)
图书馆(lubridate)
#>
#>附加包装:“lubridate”
#>以下对象已从“package:base”屏蔽:
#>
#>日期
df%
突变(日期=mdy(日期))%>%
分组依据(id)%>%
变异(日期差异=as.numeric(日期-第一个(日期)))
#>#tibble:10 x 3
#>#组:id[3]
#>id日期差异
#>
#> 1 2380 2012-10-30 0
#> 2 2380 2012-10-31 1
#> 3 2380 2012-11-01 2
#> 4 2380 2012-11-02 3
#> 5 20100 2012-10-30 0
#> 6 20100 2012-10-31 1
#> 7 20100 2012-11-01 2
#> 8 20100 2012-11-02 3
#> 9 20103 2012-10-30 0
#> 10 20103 2012-10-31 1
由(v0.2.1)库(tidyverse)于2018年11月29日创建
图书馆(lubridate)
#>
#>附加包装:“lubridate”
#>以下对象已从“package:base”屏蔽:
#>
#>日期
df%
突变(日期=mdy(日期))%>%
分组依据(id)%>%
变异(日期差异=as.numeric(日期-第一个(日期)))
#>#tibble:10 x 3
#>#组:id[3]
#>id日期差异
#>
#> 1 2380 2012-10-30 0
#> 2 2380 2012-10-31 1
#> 3 2380 2012-11-01 2
#> 4 2380 2012-11-02 3
#> 5 20100 2012-10-30 0
#> 6 20100 2012-10-31 1
#> 7 20100 2012-11-01 2
#> 8 20100 2012-11-02 3
#> 9 20103 2012-10-30 0
#> 10 20103 2012-10-31 1
由(v0.2.1)于2018-11-29创建首先,创建一个函数来计算日差
library(stringr)
day_diff <- function(day) {
days <- difftime(day, "2012-10-30", "days")
str_extract(days, "\\-*\\d+\\.*\\d*")
}
df$date_difference <- unlist(lapply(df$date, day_diff))
库(stringr)
day_diff首先,创建一个函数来计算日差
library(stringr)
day_diff <- function(day) {
days <- difftime(day, "2012-10-30", "days")
str_extract(days, "\\-*\\d+\\.*\\d*")
}
df$date_difference <- unlist(lapply(df$date, day_diff))
库(stringr)
day_diff?as.Date
,?diff
,c(0,diff(…)
对于分组部分,也可以查看:数据。表:
,dplyr:
或?base::ave
。另外:20100 10/30/12 1
应该是20100 10/30/12 0,对吗?如果你真的意思是这样的话“从当前日期中减去上一个日期”,则大多数日期差值都不正确。也许您的意思是“用id
从第一个日期减去日期”?另请参见?dplyr::lag
?as.date
,?diff
,c(0,diff(…)
对于分组部分,还可以查看:数据。表:
,dplyr::
或?base::ave
。另外:20100 10/30/12 1
应该是20100 10/30/12 0
,对吗?如果你真的意思是“从当前日期减去上一个日期”“,则大多数日期差异值都不正确。也许您的意思是“用id
”减去第一个日期?另请参见?dplyr::lag
谢谢。与stringi派生的ScriptsHanks相比,它要容易得多。与stringi派生脚本相比,它要容易得多