daily pastebin goal
9%
SHARE
TWEET

Untitled

a guest Sep 21st, 2017 56 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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))
RAW Paste Data
Top