Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. x <- c(0, 1000, 50000)
  2.  
  3. df <- data.frame(ID = seq(1:8), z = c("A", "A", "C", NA, "B", "A", NA, NA))
  4.  
  5. ID z
  6. 1 1 A
  7. 2 2 A
  8. 3 3 C
  9. 4 4 <NA>
  10. 5 5 B
  11. 6 6 A
  12. 7 7 <NA>
  13. 8 8 <NA>
  14.  
  15. ID z y
  16. 1 1 A 0
  17. 2 2 A 0
  18. 3 3 C 50000
  19. 4 4 NA NA
  20. 5 5 B 1000
  21. 6 6 A 0
  22. 7 7 NA NA
  23. 8 8 NA NA
  24.  
  25. df$y[which(df$z == "A")] <- x[1]
  26. df$y[which(df$z == "B")] <- x[2]
  27. df$y[which(df$z == "C")] <- x[3]
  28.  
  29. set.seed(84)
  30. df <- data.frame(z = sample(LETTERS[1:11], 15, replace = TRUE))
  31. x <- c(0,1000,50000)
  32.  
  33. df$y <- ifelse(df$z == "A", x[1], ifelse(df$z == "B", x[2], ifelse(df$z == "C", x[3], NA)))
  34.  
  35. df
  36. # z y
  37. # 1 I NA
  38. # 2 D NA
  39. # 3 J NA
  40. # 4 I NA
  41. # 5 C 50000
  42. # 6 C 50000
  43. # 7 B 1000
  44. # 8 D NA
  45. # 9 G NA
  46. # 10 B 1000
  47. # 11 I NA
  48. # 12 K NA
  49. # 13 J NA
  50. # 14 K NA
  51. # 15 A 0
  52.  
  53. df$y <- x[match(df$z, c("A", "B", "C"))]
  54. df
  55. # ID z y
  56. # 1 1 A 0
  57. # 2 2 A 0
  58. # 3 3 C 50000
  59. # 4 4 D NA
  60. # 5 5 B 1000
  61. # 6 6 A 0
  62. # 7 7 H NA
  63. # 8 8 E NA
  64.  
  65. df$y <- x[as.numeric(df$z)]
  66.  
  67. df$y <- x[as.numeric(factor(df$z))]
  68. head(df)
  69. # ID z y
  70. #1 1 C 50000
  71. #2 2 B 1000
  72. #3 3 H NA
  73. #4 4 F NA
  74. #5 5 G NA
  75. #6 6 K NA
  76.  
  77. set.seed(24)
  78. df <- data.frame(ID=1:40, z=sample(c(NA, LETTERS[1:11]), 40, replace=TRUE))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement