【发布时间】:2020-09-25 14:32:14
【问题描述】:
假设我有一个类似这样的数据集:
library(tidyverse)
country <- c(rep("Germany", 9), rep("Greece", 9), rep("Turkey", 9), rep("Austria", 9))
date <- rep(seq(ymd('2012-04-07'),ymd('2012-04-15'),by='days'), 4)
gyros_eaten <- c(lag(1:3, n = 2, default = 0), floor(runif(6, min=1, max=4)),
lag(1:6, n = 5, default = 0), floor(runif(3, min=1, max=4)),
lag(1:2, n = 1, default = 0), floor(runif(7, min=1, max=4)),
lag(1:3, n = 2, default = 0), floor(runif(6, min=1, max=4)))
df <- data.frame(country, date, gyros_eaten)
我想创建一个新列,将其命名为 days_since_first_local_gyros,这将告诉我从吃第一个陀螺仪后已经过了多少天,在那个特定的国家 .也就是说,如果还没有吃掉陀螺仪,或者如果那天我吃了我的第一个陀螺仪,它的值将为零。希腊。之后,它会从 1 运行到无穷大,每天增加 1。因此,每个组(即国家/地区)都会有一个不同的索引,并且我的数据集中每个可能的国家/地区 x 天 dyads 在特定时间范围内都有行。
我应该如何创建这个专栏?我认为它是case when、group_by 和lag 的某种组合,但我无法理解它。
【问题讨论】: