r - 如何从日期创建“相对时间”变量?
问题描述
我有以下数据框:
df <- structure(list(country = c("US", "US", "US", "UK", "UK", "UK",
"UK"), date = c("2020-01-01", "2020-01-02", "2020-01-03", "2020-01-04",
"2020-01-05", "2020-01-06", "2020-01-07"), y = 1:7, treatment = c(0,
1, 0, 0, 0, 1, 0)), class = "data.frame", row.names = c(NA, -7L
))
这是df:
country date y treatment
US 2020-01-01 1 0
US 2020-01-02 2 1
US 2020-01-03 3 0
UK 2020-01-01 4 0
UK 2020-01-02 5 0
UK 2020-01-03 6 1
UK 2020-01-04 7 0
我需要创建一个变量来反映治疗前后的相对时间,治疗日期为零。所以,在这种情况下,它应该等于
relative_time = c(-1,0,1,-2,-1,0,1)
我怎样才能为每组国家创建这样一个变量?
解决方案
还有dplyr
,短一点
library(lubridate)
df %>%
mutate(date = ymd(date)) %>%
group_by(country) %>%
mutate(time_to_treatment = date - date[treatment == 1])
输出
country date y treatment time_to_treatment
<chr> <date> <int> <dbl> <drtn>
1 US 2020-01-01 1 0 -1 days
2 US 2020-01-02 2 1 0 days
3 US 2020-01-03 3 0 1 days
4 UK 2020-01-04 4 0 -2 days
5 UK 2020-01-05 5 0 -1 days
6 UK 2020-01-06 6 1 0 days
7 UK 2020-01-07 7 0 1 days
推荐阅读
- php - 使用 PHP mail() 没有收到任何电子邮件。?
- python - 覆盖 [] 以构建 Python 列表
- android - 如何在 Coordinator Layout 中将 bottomNavigationView 固定到底部?
- c++ - 如何在提升日期时间中创建日期范围?
- c++ - 尝试将 std::mutex 和 std::thread 与 OpenSSL 一起使用
- javascript - 切换 div 和扩展/压缩其他
- pip - 找不到命令:tensorflowjs_converter
- c# - 由于外键问题,无法插入新记录
- javascript - Tab 键跳转到隐藏表单
- android - 从 Retrofit2 回调的 onResponse 引用 Activity 时避免内存泄漏