Skip to content

Instantly share code, notes, and snippets.

@tgerke
Last active December 13, 2019 20:39
Show Gist options
  • Select an option

  • Save tgerke/01313d4d71f881743ca7c609b2152a1a to your computer and use it in GitHub Desktop.

Select an option

Save tgerke/01313d4d71f881743ca7c609b2152a1a to your computer and use it in GitHub Desktop.
Wide to long to wide (Abby)
# this solves the data wrangling problem described at:
# https://twitter.com/AbbyCScience/status/1205549666567368705?s=20
library(tidyverse)
library(lubridate)
dat <- tibble(
ID = 1:4,
event_1 = c(mdy("1/1/17"), mdy("2/14/18"), mdy("10/30/17"), mdy("6/10/18")),
event_2 = c(mdy("1/1/17"), mdy("2/14/18"), NA, NA),
event_3 = c(mdy(NA), NA, mdy("12/16/17"), mdy("6/10/18")),
event_4 = c(mdy("12/31/16"), NA, NA, mdy("6/19/18")),
event_5 = c(mdy(NA), mdy("2/14/18"), mdy("10/30/17"), mdy("6/10/18")),
event_6 = c(mdy("12/31/16"), mdy("2/14/18"), mdy("1/1/18"), NA)
)
dat %>%
pivot_longer(-ID) %>%
group_by(ID) %>%
arrange(ID, value) %>%
filter(!is.na(value)) %>%
mutate(time = str_sub(name, -1),
event = c("first_event", "second_event", "third_event", "fourth_event")) %>%
select(ID, time, event) %>%
pivot_wider(
names_from = event,
values_from = time
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment