celestialgod

data manipulation

Aug 13th, 2016
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.58 KB | None | 0 0
  1. library(data.table)
  2. library(pipeR)
  3. resDT <- iris %>>% data.table %>>%
  4.   transform(Species = as.character(Species), id = 1:nrow(.)) %>>%
  5.   melt(id = 5:6, measure = c(1:4), variable.factor = FALSE) %>>%
  6.   `[`( , `:=`(c("partName", "measure"), tstrsplit(variable, "\\."))) %>>%
  7.   dcast.data.table(Species + partName + id~ measure, sum, value.var = "value") %>>%
  8.   `[`( , id := NULL)
  9. #        Species partName Length Width
  10. #   1:    setosa    Petal    1.4   0.2
  11. #   2:    setosa    Petal    1.4   0.2
  12. #   3:    setosa    Petal    1.3   0.2
  13. #   4:    setosa    Petal    1.5   0.2
  14. #   5:    setosa    Petal    1.4   0.2
  15. # ---                                
  16. # 296: virginica    Sepal    6.7   3.0
  17. # 297: virginica    Sepal    6.3   2.5
  18. # 298: virginica    Sepal    6.5   3.0
  19. # 299: virginica    Sepal    6.2   3.4
  20. # 300: virginica    Sepal    5.9   3.0
  21.  
  22. library(dplyr)
  23. library(tidyr)
  24. resTbl <- iris %>>% tbl_df %>>% mutate(id = 1:nrow(.)) %>>%
  25.   gather(variable, value, -Species, -id) %>>%
  26.   separate(variable, c("partName", "measure")) %>>%
  27.   spread(measure, value) %>>% select(-id)
  28.  
  29. # Source: local data frame [300 x 4]
  30. #
  31. #    Species partName Length Width
  32. #     <fctr>    <chr>  <dbl> <dbl>
  33. # 1   setosa    Petal    1.4   0.2
  34. # 2   setosa    Sepal    5.1   3.5
  35. # 3   setosa    Petal    1.4   0.2
  36. # 4   setosa    Sepal    4.9   3.0
  37. # 5   setosa    Petal    1.3   0.2
  38. # 6   setosa    Sepal    4.7   3.2
  39. # 7   setosa    Petal    1.5   0.2
  40. # 8   setosa    Sepal    4.6   3.1
  41. # 9   setosa    Petal    1.4   0.2
  42. # 10  setosa    Sepal    5.0   3.6
  43. # ..     ...      ...    ...   ...
Advertisement
Add Comment
Please, Sign In to add comment