Guest User

Untitled

a guest
May 15th, 2018
835
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. library(dplyr)
  2. library(tidyr)
  3.  
  4. dat <- data_frame('date' = Sys.time(),
  5. 'from' = c("person1@gmail.com", "person2@yahoo.com",
  6. "person3@hotmail.com", "person4@msn.com"),
  7. 'to' = c("person2@yahoo.com,person3@hotmail.com", "person3@hotmail.com",
  8. "person4@msn.com,person1@gmail.com,person2@yahoo.com", "person1@gmail.com"))
  9.  
  10. dat %>% separate(to, into = paste0("to_", 1:3), sep = ",", extra = "merge", fill = "right")
  11.  
  12. #Source: local data frame [4 x 5]
  13. #
  14. # date from to_1 to_2 to_3
  15. # (time) (chr) (chr) (chr) (chr)
  16. #1 2015-10-22 14:52:41 person1@gmail.com person2@yahoo.com person3@hotmail.com NA
  17. #2 2015-10-22 14:52:41 person2@yahoo.com person3@hotmail.com NA NA
  18. #3 2015-10-22 14:52:41 person3@hotmail.com person4@msn.com person1@gmail.com person2@yahoo.com
  19. #4 2015-10-22 14:52:41 person4@msn.com person1@gmail.com NA NA
  20.  
  21. n_vars <- dat$to %>% str_split(",") %>% lapply(function(z) length(z)) %>% unlist() %>% max()
  22.  
  23. library(splitstackshape)
  24. cSplit(dat, 'to', ',')
  25.  
  26. library(dplyr)
  27. library(tidyr)
  28.  
  29. dat %>% mutate(to = strsplit(to, ",")) %>%
  30. unnest(to) %>%
  31. group_by(from) %>%
  32. mutate(row = row_number()) %>%
  33. spread(row, to)
  34.  
  35. Source: local data frame [4 x 5]
  36.  
  37. date from 1 2 3
  38. (time) (chr) (chr) (chr) (chr)
  39. 1 2015-10-22 15:03:17 person1@gmail.com person2@yahoo.com person3@hotmail.com NA
  40. 2 2015-10-22 15:03:17 person2@yahoo.com person3@hotmail.com NA NA
  41. 3 2015-10-22 15:03:17 person3@hotmail.com person4@msn.com person1@gmail.com person2@yahoo.com
  42. 4 2015-10-22 15:03:17 person4@msn.com person1@gmail.com NA NA
Add Comment
Please, Sign In to add comment