Skip to content

Instantly share code, notes, and snippets.

@patperu
Last active January 6, 2018 17:07
Show Gist options
  • Save patperu/ba5b3ccabd4d14f0b65d96dffb57fab8 to your computer and use it in GitHub Desktop.
Save patperu/ba5b3ccabd4d14f0b65d96dffb57fab8 to your computer and use it in GitHub Desktop.
Tidy data, split Variables
ID TITLE PRODUCT COUNTRY DATE
ABC123 EVENT A PRODUCT A, PRODUCT B COUNTRY A, COUNTRY B GG-MM.YYYY
ABC124 EVENT A PRODUCT C, PRODUCT D, PRODUCT E COUNTRY C, COUNTRY D, COUNTRY E GG-MM.YYYY
ABC125 EVENT A PRODUCT F, PRODUCT G COUNTRY F, COUNTRY G, COUNTRY H GG-MM.YYYY
ID TITLE DATE PRODUCT COUNTRY
ABC123 EVENT A GG-MM.YYYY PRODUCT A COUNTRY A
ABC123 EVENT A GG-MM.YYYY PRODUCT B COUNTRY B
ABC124 EVENT A GG-MM.YYYY PRODUCT C COUNTRY C
ABC124 EVENT A GG-MM.YYYY PRODUCT D COUNTRY D
ABC124 EVENT A GG-MM.YYYY PRODUCT E COUNTRY E
ABC125 EVENT A GG-MM.YYYY PRODUCT F COUNTRY F
ABC125 EVENT A GG-MM.YYYY PRODUCT G COUNTRY G
ABC125 EVENT A GG-MM.YYYY NA COUNTRY H
library(stringr)
library(dplyr)
library(tidyr)
library(purrr)
library(readr)
x <- read_csv("example.csv")
x
vars <- c("PRODUCT", "COUNTRY")
xt <- x %>%
map_at(vars, ~str_split(., ", ")) %>%
as_data_frame()
(c1 <- xt %>% select(-PRODUCT) %>% unnest() %>% mutate(idd = 1:n()))
(p1 <- xt %>% select(-COUNTRY) %>% unnest() %>% mutate(idd = 1:n()))
fin <- full_join(p1, c1, by = c("ID", "TITLE", "DATE", "idd")) %>% select(-idd)
fin
write_csv(fin, "example_tidy.csv")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment