Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. ID <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)
  2. period<- c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2)
  3. column1<- c(100, 400, 500, 300, 700, 800, 300, 100, 1100, 100)
  4. column2<- c(1500, 100,800,900,100,1100,1200,200,100,400)
  5. column3<- c(200, 1000, 200,NA,500,800,1100,300,100,2000)
  6. df<- data.frame(ID, period, column1, column2, column3)
  7.  
  8. ID period column1 column2 column3
  9. 1 1 100 1500 200
  10. 1 2 400 100 1000
  11. 2 1 500 800 200
  12. 2 2 300 900 NA
  13. 3 1 700 100 500
  14. 3 2 800 1100 800
  15. 4 1 300 1200 1100
  16. 4 2 100 200 300
  17. 5 1 1100 100 100
  18. 5 2 100 400 2000
  19.  
  20. agent_number<- c(100, 200, 300)
  21. agent_name<- c("agent1", "agent2", "agent3")
  22. lookup_table<- data.frame(agent_number, agent_name)
  23.  
  24. ID period column1 column2 column3 column4 column5 column6 column7
  25. 1 1 100 1500 200 1 agent1 agent2 <NA>
  26. 1 2 400 100 1000 1 agent1 <NA> <NA>
  27. 2 1 500 800 200 1 agent2 <NA> <NA>
  28. 2 2 300 900 NA 0 agent3 <NA> <NA>
  29. 3 1 700 100 500 1 agent1 <NA> <NA>
  30. 3 2 800 1100 800 0 <NA> <NA> <NA>
  31. 4 1 300 1200 1100 1 agent3 <NA> <NA>
  32. 4 2 100 200 300 1 agent1 agent2 agent3
  33. 5 1 1100 100 100 1 agent1 agent1 <NA>
  34. 5 2 100 400 2000 1 agent1 <NA> <NA>
  35.  
  36. agent_number<- c("100", "200", "300")
  37. df %>% select(ID, column1:column3) %>%
  38. mutate_at(vars(column1:column3),list(~ ifelse(. == agent_number, 1, 0)))
  39.  
  40. left_join(df, lookup_table, by=c("column1"="agent_number"), suffix = c("", ".1"), suffixes_mandatory = c(FALSE, TRUE))
  41. left_join(df, lookup_table, by=c("column2"="agent_number"), suffix = c("", ".2"), suffixes_mandatory = c(FALSE, TRUE))
  42. ID period column1 column2 column3 agent_name
  43. 1 1 100 1500 200 <NA>
  44. 1 2 400 100 1000 <NA>
  45. 2 1 500 800 200 <NA>
  46. 2 2 300 900 NA <NA>
  47. 3 1 700 100 500 <NA>
  48. 3 2 800 1100 800 <NA>
  49. 4 1 300 1200 1100 <NA>
  50. 4 2 100 200 300 <NA>
  51. 5 1 1100 100 100 <NA>
  52. 5 2 100 400 2000 <NA>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement