Guest User

Untitled

a guest
Nov 21st, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 KB | None | 0 0
  1. library(dplyr)
  2. mtcars %>% group_by(cyl,carb) %>% summarize(mean(disp))
  3.  
  4. cyl carb mean(disp)
  5. 1 4 1 91.38
  6. 2 4 2 116.60
  7. 3 6 1 241.50
  8. 4 6 4 163.80
  9. 5 6 6 145.00
  10. 6 8 2 345.50
  11. 7 8 3 275.80
  12. 8 8 4 405.50
  13. 9 8 8 301.00
  14.  
  15. library(data.table)
  16. DT <- data.table(mtcars)
  17. rbind(
  18. DT[,.(mean(disp)), by=.(cyl,carb)],
  19. DT[,.(mean(disp), carb=NA), by=.(cyl) ],
  20. DT[,.(mean(disp), cyl=NA), by=.(carb)]
  21. )[order(cyl,carb)]
  22.  
  23. cyl carb V1
  24. 1: 4 1 91.3800
  25. 2: 4 2 116.6000
  26. 3: 4 NA 105.1364
  27. 4: 6 1 241.5000
  28. 5: 6 4 163.8000
  29. 6: 6 6 145.0000
  30. 7: 6 NA 183.3143
  31. 8: 8 2 345.5000
  32. 9: 8 3 275.8000
  33. 10: 8 4 405.5000
  34. 11: 8 8 301.0000
  35. 12: 8 NA 353.1000
  36. 13: NA 1 134.2714
  37. 14: NA 2 208.1600
  38. 15: NA 3 275.8000
  39. 16: NA 4 308.8200
  40. 17: NA 6 145.0000
  41. 18: NA 8 301.0000
  42.  
  43. bind_rows(
  44. mtcars %>%
  45. group_by(cyl, carb) %>%
  46. summarise(Mean= mean(disp)),
  47. mtcars %>%
  48. group_by(cyl) %>%
  49. summarise(carb=NA, Mean=mean(disp)),
  50. mtcars %>%
  51. group_by(carb) %>%
  52. summarise(cyl=NA, Mean=mean(disp))
  53. ) %>% arrange(cyl, carb)
  54.  
  55. library(lazyeval)
  56. f1 <- function(df, grp, Var, func){
  57. FUN <- match.fun(func)
  58. df %>%
  59. group_by_(.dots=grp) %>%
  60. summarise_(interp(~FUN(v), v=as.name(Var)))
  61. }
  62.  
  63. m1 <- f1(mtcars, c('carb', 'cyl'), 'disp', 'mean')
  64. m2 <- f1(mtcars, 'carb', 'disp', 'mean')
  65. m3 <- f1(mtcars, 'cyl', 'disp', 'mean')
  66.  
  67. bind_rows(list(m1, m2, m3)) %>%
  68. arrange(cyl, carb) %>%
  69. rename(Mean=`FUN(disp)`)
  70. carb cyl Mean
  71. 1 1 4 91.3800
  72. 2 2 4 116.6000
  73. 3 NA 4 105.1364
  74. 4 1 6 241.5000
  75. 5 4 6 163.8000
  76. 6 6 6 145.0000
  77. 7 NA 6 183.3143
  78. 8 2 8 345.5000
  79. 9 3 8 275.8000
  80. 10 4 8 405.5000
  81. 11 8 8 301.0000
  82. 12 NA 8 353.1000
  83. 13 1 NA 134.2714
  84. 14 2 NA 208.1600
  85. 15 3 NA 275.8000
  86. 16 4 NA 308.8200
  87. 17 6 NA 145.0000
  88. 18 8 NA 301.0000
  89.  
  90. rbindlist(list(
  91. mtcars %>% group_by(cyl) %>% summarise(mean(disp)),
  92. mtcars %>% group_by(carb) %>% summarise(mean(disp)),
  93. mtcars %>% group_by(cyl,carb) %>% summarise(mean(disp))
  94. ),fill=TRUE) %>% arrange(cyl,carb)
  95.  
  96. rbindlist(list(
  97. DT[,mean(disp),by=.(cyl,carb)],
  98. DT[,mean(disp),by=.(cyl)],
  99. DT[,mean(disp),by=.(carb)]
  100. ),fill=TRUE)[order(cyl,carb)]
  101.  
  102. library(dplyr)
  103. library(reshape2)
  104. out <- bind_cols(
  105. mtcars %>% group_by(cyl, carb) %>%
  106. summarise(mu = mean(disp)) %>%
  107. dcast(cyl ~ carb),
  108. (mtcars %>% group_by(cyl) %>% summarise(Total=mean(disp)))[,2]
  109. )
  110.  
  111. margin <- t((mtcars %>% group_by(carb) %>% summarise(Total=mean(disp)))[,2])
  112. rbind(out, c(NA, margin, mean(mtcars$disp))) %>%
  113. `rownames<-`(c(paste("cyl", c(4,6,8)), "Total")) # add some row names
  114. # cyl 1 2 3 4 6 8 Total
  115. # cyl 4 4 91.3800 116.60 NA NA NA NA 105.1364
  116. # cyl 6 6 241.5000 NA NA 163.80 145 NA 183.3143
  117. # cyl 8 8 NA 345.50 275.8 405.50 NA 301 353.1000
  118. # Total NA 134.2714 208.16 275.8 308.82 145 301 230.7219
  119.  
  120. p <-mtcars %>% group_by(cyl,carb)
  121. p$cyl <- as.factor(p$cyl)
  122. average_disp <- sapply(1:length(levels(p$cyl)), function(x)mean(subset(p,p$cyl==levels(p$cyl)[x])$disp))
  123. df <- data.frame(levels(p$cyl),average_disp)
  124. colnames(df)[1]<-"cyl"
  125.  
  126. #> df
  127. # cyl average_disp
  128. #1 4 105.1364
  129. #2 6 183.3143
  130. #3 8 353.1000
  131.  
  132. library(plyr)
  133. library(dplyr)
  134.  
  135. # Margins without labels
  136. mtcars %>%
  137. group_by(cyl,carb) %>%
  138. summarize(Mean_Disp=mean(disp)) %>%
  139. do(plyr::rbind.fill(., data_frame(cyl=first(.$cyl), Mean_Disp=sum(.$Mean_Disp, na.rm=T))))
  140.  
  141. Source: local data frame [12 x 3]
  142. Groups: cyl [3]
  143.  
  144. cyl carb Mean_Disp
  145. <dbl> <dbl> <dbl>
  146. 1 4 1 91.38
  147. 2 4 2 116.60
  148. 3 4 NA 207.98
  149. 4 6 1 241.50
  150. 5 6 4 163.80
  151. 6 6 6 145.00
  152. 7 6 NA 550.30
  153. 8 8 2 345.50
  154. 9 8 3 275.80
  155. 10 8 4 405.50
  156. 11 8 8 301.00
  157. 12 8 NA 1327.80
  158.  
  159. mtcars %>%
  160. group_by(cyl,carb) %>%
  161. summarize(Mean_Disp=mean(disp)) %>%
  162. do(plyr::rbind.fill(., data_frame(cyl=first(.$cyl), carb=c("Total", "Mean"), Mean_Disp=c(sum(.$Mean_Disp, na.rm=T), mean(.$Mean_Disp, na.rm=T)))))
  163.  
  164. Source: local data frame [15 x 3]
  165. Groups: cyl [3]
  166.  
  167. cyl carb Mean_Disp
  168. <dbl> <chr> <dbl>
  169. 1 4 1 91.38
  170. 2 4 2 116.60
  171. 3 4 Total 207.98
  172. 4 4 Mean 103.99
  173. 5 6 1 241.50
  174. 6 6 4 163.80
  175. 7 6 6 145.00
  176. 8 6 Total 550.30
  177. 9 6 Mean 183.43
  178. 10 8 2 345.50
  179. 11 8 3 275.80
  180. 12 8 4 405.50
  181. 13 8 8 301.00
  182. 14 8 Total 1327.80
  183. 15 8 Mean 331.95
  184.  
  185. cyl_carb <- mtcars %>% group_by(cyl,carb) %>% summarize(mean(disp))
  186. cyl <- mtcars %>% group_by(cyl) %>% summarize(mean(disp))
  187. joined <- full_join(cyl_carb, cyl)
  188. result <- arrange(joined, cyl)
  189. result
  190.  
  191. Source: local data frame [12 x 3]
  192. Groups: cyl [3]
  193.  
  194. cyl carb mean(disp)
  195. (dbl) (dbl) (dbl)
  196. 1 4 1 91.3800
  197. 2 4 2 116.6000
  198. 3 4 NA 105.1364
  199. 4 6 1 241.5000
  200. 5 6 4 163.8000
  201. 6 6 6 145.0000
  202. 7 6 NA 183.3143
  203. 8 8 2 345.5000
  204. 9 8 3 275.8000
  205. 10 8 4 405.5000
  206. 11 8 8 301.0000
  207. 12 8 NA 353.1000
  208.  
  209. cyl_carb <- mtcars %>% group_by(cyl,carb) %>% summarize(mean(disp))
  210. cyl <- mtcars %>% group_by(cyl) %>% summarize(mean.cyl = mean(disp))
  211. joined <- full_join(cyl_carb, cyl)
  212. joined
  213.  
  214. Source: local data frame [9 x 4]
  215. Groups: cyl [?]
  216.  
  217. cyl carb mean(disp) mean.cyl
  218. (dbl) (dbl) (dbl) (dbl)
  219. 1 4 1 91.38 105.1364
  220. 2 4 2 116.60 105.1364
  221. 3 6 1 241.50 183.3143
  222. 4 6 4 163.80 183.3143
  223. 5 6 6 145.00 183.3143
  224. 6 8 2 345.50 353.1000
  225. 7 8 3 275.80 353.1000
  226. 8 8 4 405.50 353.1000
  227. 9 8 8 301.00 353.1000
Add Comment
Please, Sign In to add comment