Předpokládejme, že mám dataset podobné této:
library(tidyverse)
library(lubridate)
state <- c(rep("Alabama", 10), rep("Arizona", 10), rep("Arkansas", 10))
county <- c(rep("Baldwin", 5), rep("Barbour", 5), rep("Apache", 5), rep("Cochise", 5), rep("Arkansas", 5), rep("Ashley", 5))
date <- rep(seq(ymd('2012-04-06'),ymd('2012-04-10'),by='days'), 6)
stray_dogs <- c(lag(1:3, n = 2, default = 0), floor(runif(7, min=1, max=4)),
lag(1:6, n = 5, default = 0), floor(runif(4, min=1, max=18)),
lag(1:2, n = 1, default = 0), floor(runif(8, min=1, max=4)))
df <- data.frame(state, county, date, stray_dogs) %>%
mutate(stray_dogs_max = max(stray_dogs)) %>%
mutate(most_stray_dogs = case_when(stray_dogs_max == stray_dogs ~ 1,
stray_dogs_max != stray_dogs ~ 0))
Chtěl bych najít datum, kdy nejvyšší počet toulavých psů byly nalezeny v každém kraji prostřednictvím group_by(state, county)
nebo něco podobného a vytvořit dichotomické proměnné (sloupec), který má hodnotu 1
pro daný den (a trvá 0
po zbytek dní). Nicméně, když tam byly žádné toulavých psů na všechny v určitém okrese v průběhu období, by to mělo označit jako den 1
když most_stray_dogs
se rovná 1, a když tam jsou několik dní se stejným počtem toulavých psů v rámci okresu, je třeba vybrat den, který je blíže ke dni most_stray_dogs == 1
.
Pro ten kousek, moje intuice by bylo použít helper vektor, vytvořený s difftime
; nicméně já prostě nemůžu dát dohromady všechny tyto najednou. Jak mám vytvořit v tomto sloupci?