r - 按组从前一行中减去日期(使用 R)
问题描述
我有一个与此类似的问题(按组从前一行中减去值),但我想按组 ID 从当前日期中减去前一个日期,以便估计天数。我尝试通过将“值”替换为“日期”来编辑先前建议的脚本。尽管我尝试了不同的建议方法,但我不断收到此错误消息“mutate_impl(.data,dots)中的错误:评估错误:无法为签名“POSIXct”首先找到函数的继承方法。”
Data
id date
2380 10/30/12
2380 10/31/12
2380 11/1/12
2380 11/2/12
20100 10/30/12
20100 10/31/12
20100 11/1/12
20100 11/2/12
20103 10/30/12
我想要这种桌子
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
解决方案
library(tidyverse)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
df <- tribble(~id, ~date,
2380, "10/30/12",
2380, "10/31/12",
2380, "11/1/12",
2380, "11/2/12",
20100, "10/30/12",
20100, "10/31/12",
20100, "11/1/12",
20100, "11/2/12",
20103, "10/30/12",
20103, "10/31/12")
df %>%
mutate(date = mdy(date)) %>%
group_by(id) %>%
mutate(date_difference = as.numeric(date - first(date)))
#> # A tibble: 10 x 3
#> # Groups: id [3]
#> id date date_difference
#> <dbl> <date> <dbl>
#> 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
由reprex 包(v0.2.1)于 2018 年 11 月 29 日创建
推荐阅读
- python - Python multipart/form-data 发布请求
- xcode - Xcode 11.1 和 iOS 13.1.3 中未显示能量日志的仪器
- regex - 正则表达式仅包含 xslt 中的数字
- ubuntu - 按下登录按钮后 Ubuntu 18.04 关机
- mysql - 在 SQL 的 WHERE 中使用 MAX 执行查询时出现问题
- mongodb - 查询以在 mongodb 中使用 group by 条件进行计数
- python - 如何发布带有可观察的芹菜状态?
- qlikview - 如何在 qlik 意义上循环每个 id 以获得他的相关数据的最小值和最大值
- angular - 在初始化离子 4 之前无法访问“LoginPageModule”
- node.js - 如何使用 sirv 访问 Heroku 分配的端口?