{"id":2269,"date":"2021-01-23T00:24:28","date_gmt":"2021-01-22T15:24:28","guid":{"rendered":"http:\/\/141.164.34.82\/?p=2269"},"modified":"2021-01-23T00:27:49","modified_gmt":"2021-01-22T15:27:49","slug":"aggregate-2-dplyr","status":"publish","type":"post","link":"http:\/\/ds.sumeun.org\/?p=2269","title":{"rendered":"aggregate 2 dplyr"},"content":{"rendered":"<pre><code class=\"r\">dat &lt;- data.frame(gender=c('M','M','M','M','M','F','F','F','F','F'),\r\n                  num=c(1,2,3,1,2,3,1,2,3,1),\r\n                  h=c(170,180,190,180,170,150,160,170,160,150),\r\n                  w=c(80,70,100,80,60,50,50,60,60,50))\r\ndat$BMI &lt;- dat$w\/(dat$h\/100)^2\r\n\r\ntable(dat$gender, dat$num)\r\n<\/code><\/pre>\n<pre>##    \r\n##     1 2 3\r\n##   F 2 1 2\r\n##   M 2 2 1\r\n<\/pre>\n<p>\ucc45\uc758 113\ucabd\uc744 \ubcf4\uc790.<\/p>\n<p>\uc5ec\uae30\uc11c <code>aggregate<\/code>\uc774\ub098 <code>by<\/code>\uc640 \uac19\uc740 \ud568\uc218\ub97c \uc790\uc138\ud788 \uc124\uba85\ud574 \ub193\uc9c0 \uc54a\uc558\ub2e4.<\/p>\n<p>\uc65c\ub0d0\ud558\uba74 \uc774 \ud568\uc218\ub4e4\uc740 dplyr \ub610\ub294 data.table \ud328\ud0a4\uc9c0\ub97c \uc0ac\uc6a9\ud574\uc11c\ub3c4 \ub3d9\uc77c\ud55c \uacb0\uacfc\ub97c \uc0b0\ucd9c\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \uadf8\ub9ac\uace0 \uc694\uc998\uc5d0\ub294 \uc798 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \ud568\uc218\ub4e4\uc774\ub2e4. \ud754\ud788 \ub9d0\ud558\ub294 legacy code\ub77c\uace0 \ub9d0\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uadf8 \uc758\ubbf8\ub97c \uc774\ud574\ud560 \ud544\uc694\ub3c4 \uc788\uc73c\ubbc0\ub85c dplyr\ub85c \ubc88\uc5ed\uc744 \ud574\ubcf4\uc558\ub2e4.<\/p>\n<pre><code class=\"r\">tapply(dat$h, list(dat$gender, dat$num), mean)\r\nrequire(dplyr); require(tidyr)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise(mean = mean(h)) %&gt;% spread(key='num', value='mean')\r\n<\/code><\/pre>\n<pre>## `summarise()` regrouping output by 'gender' (override with `.groups` argument)\r\n<\/pre>\n<pre>##     1   2   3\r\n## F 155 170 155\r\n## M 175 175 190\r\n## # A tibble: 2 x 4\r\n## # Groups:   gender [2]\r\n##   gender   `1`   `2`   `3`\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt;\r\n## 1 F        155   170   155\r\n## 2 M        175   175   190\r\n<\/pre>\n<pre><code class=\"r\">aggregate(h ~ gender + num, sum, data=dat)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise(h=sum(h)) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>## `summarise()` regrouping output by 'gender' (override with `.groups` argument)\r\n<\/pre>\n<pre>##   gender num   h\r\n## 1      F   1 310\r\n## 2      M   1 350\r\n## 3      F   2 170\r\n## 4      M   2 350\r\n## 5      F   3 310\r\n## 6      M   3 190\r\n## # A tibble: 6 x 3\r\n## # Groups:   gender [2]\r\n##   gender   num     h\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;dbl&gt;\r\n## 1 F          1   310\r\n## 2 M          1   350\r\n## 3 F          2   170\r\n## 4 M          2   350\r\n## 5 F          3   310\r\n## 6 M          3   190\r\n<\/pre>\n<pre><code class=\"r\">aggregate(h + w ~ gender + num, sum, data=dat)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise(h=sum(h+w)) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>## `summarise()` regrouping output by 'gender' (override with `.groups` argument)\r\n<\/pre>\n<pre>##   gender num h + w\r\n## 1      F   1   410\r\n## 2      M   1   510\r\n## 3      F   2   230\r\n## 4      M   2   480\r\n## 5      F   3   420\r\n## 6      M   3   290\r\n## # A tibble: 6 x 3\r\n## # Groups:   gender [2]\r\n##   gender   num     h\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;dbl&gt;\r\n## 1 F          1   410\r\n## 2 M          1   510\r\n## 3 F          2   230\r\n## 4 M          2   480\r\n## 5 F          3   420\r\n## 6 M          3   290\r\n<\/pre>\n<p>\uc704\uc758 \uacbd\uc6b0 <code>h=sum(h+w)<\/code>\uc778\uc9c0 <code>h=sum(h)+sum(w)<\/code>\uc778\uc9c0 \ud5f7\uac08\ub9b4 \uc218 \uc788\ub2e4. <code>h=max(h+w)<\/code>\uc640 <code>h=max(h)+max(w)<\/code>\ub294 \ub2e4\ub974\uae30 \ub54c\ubb38\uc5d0 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud558\uc790.<\/p>\n<pre><code class=\"r\">aggregate(h + w ~ gender + num, max, data=dat) \r\ndat %&gt;% group_by(gender, num) %&gt;% summarise(`h + w`=max(h+w)) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>## `summarise()` regrouping output by 'gender' (override with `.groups` argument)\r\n<\/pre>\n<pre>##   gender num h + w\r\n## 1      F   1   210\r\n## 2      M   1   260\r\n## 3      F   2   230\r\n## 4      M   2   250\r\n## 5      F   3   220\r\n## 6      M   3   290\r\n## # A tibble: 6 x 3\r\n## # Groups:   gender [2]\r\n##   gender   num `h + w`\r\n##   &lt;chr&gt;  &lt;dbl&gt;   &lt;dbl&gt;\r\n## 1 F          1     210\r\n## 2 M          1     260\r\n## 3 F          2     230\r\n## 4 M          2     250\r\n## 5 F          3     220\r\n## 6 M          3     290\r\n<\/pre>\n<pre><code class=\"r\">aggregate(cbind(h,w)~gender+num, sum, data=dat)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise(h=sum(h), w=sum(w)) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>## `summarise()` regrouping output by 'gender' (override with `.groups` argument)\r\n<\/pre>\n<pre>##   gender num   h   w\r\n## 1      F   1 310 100\r\n## 2      M   1 350 160\r\n## 3      F   2 170  60\r\n## 4      M   2 350 130\r\n## 5      F   3 310 110\r\n## 6      M   3 190 100\r\n## # A tibble: 6 x 4\r\n## # Groups:   gender [2]\r\n##   gender   num     h     w\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt;\r\n## 1 F          1   310   100\r\n## 2 M          1   350   160\r\n## 3 F          2   170    60\r\n## 4 M          2   350   130\r\n## 5 F          3   310   110\r\n## 6 M          3   190   100\r\n<\/pre>\n<pre><code class=\"r\">aggregate(. ~ gender + num, sum, data=dat)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise_all(sum) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>##   gender num   h   w      BMI\r\n## 1      F   1 310 100 41.75347\r\n## 2      M   1 350 160 52.37302\r\n## 3      F   2 170  60 20.76125\r\n## 4      M   2 350 130 42.36618\r\n## 5      F   3 310 110 45.65972\r\n## 6      M   3 190 100 27.70083\r\n## # A tibble: 6 x 5\r\n## # Groups:   gender [2]\r\n##   gender   num     h     w   BMI\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt; &lt;dbl&gt;\r\n## 1 F          1   310   100  41.8\r\n## 2 M          1   350   160  52.4\r\n## 3 F          2   170    60  20.8\r\n## 4 M          2   350   130  42.4\r\n## 5 F          3   310   110  45.7\r\n## 6 M          3   190   100  27.7\r\n<\/pre>\n<pre><code class=\"r\">aggregate(dat, list(dat$gender, dat$num), length)\r\ndat %&gt;% group_by(gender, num) %&gt;% summarise_all(length) %&gt;% arrange(num)\r\n<\/code><\/pre>\n<pre>##   Group.1 Group.2 gender num h w BMI\r\n## 1       F       1      2   2 2 2   2\r\n## 2       M       1      2   2 2 2   2\r\n## 3       F       2      1   1 1 1   1\r\n## 4       M       2      2   2 2 2   2\r\n## 5       F       3      2   2 2 2   2\r\n## 6       M       3      1   1 1 1   1\r\n## # A tibble: 6 x 5\r\n## # Groups:   gender [2]\r\n##   gender   num     h     w   BMI\r\n##   &lt;chr&gt;  &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;int&gt;\r\n## 1 F          1     2     2     2\r\n## 2 M          1     2     2     2\r\n## 3 F          2     1     1     1\r\n## 4 M          2     2     2     2\r\n## 5 F          3     2     2     2\r\n## 6 M          3     1     1     1\r\n<\/pre>\n<pre><code class=\"r\">by(dat, list(dat$gender, dat$num), summary)\r\n# dplyr\ub85c \uad6c\ud604\ud558\uae30 \ud798\ub4e6\r\nrequire(data.table)\r\ndatDT &lt;- data.table(dat)\r\ndatDT[,{print(paste(gender, num));print(summary(.SD))}, by=c('gender', 'num')]\r\n<\/code><\/pre>\n<pre>## : F\r\n## : 1\r\n##     gender               num          h               w           BMI       \r\n##  Length:2           Min.   :1   Min.   :150.0   Min.   :50   Min.   :19.53  \r\n##  Class :character   1st Qu.:1   1st Qu.:152.5   1st Qu.:50   1st Qu.:20.20  \r\n##  Mode  :character   Median :1   Median :155.0   Median :50   Median :20.88  \r\n##                     Mean   :1   Mean   :155.0   Mean   :50   Mean   :20.88  \r\n##                     3rd Qu.:1   3rd Qu.:157.5   3rd Qu.:50   3rd Qu.:21.55  \r\n##                     Max.   :1   Max.   :160.0   Max.   :50   Max.   :22.22  \r\n## --------------------------------------------------------------------------------- \r\n## : M\r\n## : 1\r\n##     gender               num          h               w           BMI       \r\n##  Length:2           Min.   :1   Min.   :170.0   Min.   :80   Min.   :24.69  \r\n##  Class :character   1st Qu.:1   1st Qu.:172.5   1st Qu.:80   1st Qu.:25.44  \r\n##  Mode  :character   Median :1   Median :175.0   Median :80   Median :26.19  \r\n##                     Mean   :1   Mean   :175.0   Mean   :80   Mean   :26.19  \r\n##                     3rd Qu.:1   3rd Qu.:177.5   3rd Qu.:80   3rd Qu.:26.93  \r\n##                     Max.   :1   Max.   :180.0   Max.   :80   Max.   :27.68  \r\n## --------------------------------------------------------------------------------- \r\n## : F\r\n## : 2\r\n##     gender               num          h             w           BMI       \r\n##  Length:1           Min.   :2   Min.   :170   Min.   :60   Min.   :20.76  \r\n##  Class :character   1st Qu.:2   1st Qu.:170   1st Qu.:60   1st Qu.:20.76  \r\n##  Mode  :character   Median :2   Median :170   Median :60   Median :20.76  \r\n##                     Mean   :2   Mean   :170   Mean   :60   Mean   :20.76  \r\n##                     3rd Qu.:2   3rd Qu.:170   3rd Qu.:60   3rd Qu.:20.76  \r\n##                     Max.   :2   Max.   :170   Max.   :60   Max.   :20.76  \r\n## --------------------------------------------------------------------------------- \r\n## : M\r\n## : 2\r\n##     gender               num          h               w             BMI       \r\n##  Length:2           Min.   :2   Min.   :170.0   Min.   :60.0   Min.   :20.76  \r\n##  Class :character   1st Qu.:2   1st Qu.:172.5   1st Qu.:62.5   1st Qu.:20.97  \r\n##  Mode  :character   Median :2   Median :175.0   Median :65.0   Median :21.18  \r\n##                     Mean   :2   Mean   :175.0   Mean   :65.0   Mean   :21.18  \r\n##                     3rd Qu.:2   3rd Qu.:177.5   3rd Qu.:67.5   3rd Qu.:21.39  \r\n##                     Max.   :2   Max.   :180.0   Max.   :70.0   Max.   :21.60  \r\n## --------------------------------------------------------------------------------- \r\n## : F\r\n## : 3\r\n##     gender               num          h               w             BMI       \r\n##  Length:2           Min.   :3   Min.   :150.0   Min.   :50.0   Min.   :22.22  \r\n##  Class :character   1st Qu.:3   1st Qu.:152.5   1st Qu.:52.5   1st Qu.:22.53  \r\n##  Mode  :character   Median :3   Median :155.0   Median :55.0   Median :22.83  \r\n##                     Mean   :3   Mean   :155.0   Mean   :55.0   Mean   :22.83  \r\n##                     3rd Qu.:3   3rd Qu.:157.5   3rd Qu.:57.5   3rd Qu.:23.13  \r\n##                     Max.   :3   Max.   :160.0   Max.   :60.0   Max.   :23.44  \r\n## --------------------------------------------------------------------------------- \r\n## : M\r\n## : 3\r\n##     gender               num          h             w            BMI      \r\n##  Length:1           Min.   :3   Min.   :190   Min.   :100   Min.   :27.7  \r\n##  Class :character   1st Qu.:3   1st Qu.:190   1st Qu.:100   1st Qu.:27.7  \r\n##  Mode  :character   Median :3   Median :190   Median :100   Median :27.7  \r\n##                     Mean   :3   Mean   :190   Mean   :100   Mean   :27.7  \r\n##                     3rd Qu.:3   3rd Qu.:190   3rd Qu.:100   3rd Qu.:27.7  \r\n##                     Max.   :3   Max.   :190   Max.   :100   Max.   :27.7  \r\n## [1] \"M 1\"\r\n##        h               w           BMI       \r\n##  Min.   :170.0   Min.   :80   Min.   :24.69  \r\n##  1st Qu.:172.5   1st Qu.:80   1st Qu.:25.44  \r\n##  Median :175.0   Median :80   Median :26.19  \r\n##  Mean   :175.0   Mean   :80   Mean   :26.19  \r\n##  3rd Qu.:177.5   3rd Qu.:80   3rd Qu.:26.93  \r\n##  Max.   :180.0   Max.   :80   Max.   :27.68  \r\n## [1] \"M 2\"\r\n##        h               w             BMI       \r\n##  Min.   :170.0   Min.   :60.0   Min.   :20.76  \r\n##  1st Qu.:172.5   1st Qu.:62.5   1st Qu.:20.97  \r\n##  Median :175.0   Median :65.0   Median :21.18  \r\n##  Mean   :175.0   Mean   :65.0   Mean   :21.18  \r\n##  3rd Qu.:177.5   3rd Qu.:67.5   3rd Qu.:21.39  \r\n##  Max.   :180.0   Max.   :70.0   Max.   :21.60  \r\n## [1] \"M 3\"\r\n##        h             w            BMI      \r\n##  Min.   :190   Min.   :100   Min.   :27.7  \r\n##  1st Qu.:190   1st Qu.:100   1st Qu.:27.7  \r\n##  Median :190   Median :100   Median :27.7  \r\n##  Mean   :190   Mean   :100   Mean   :27.7  \r\n##  3rd Qu.:190   3rd Qu.:100   3rd Qu.:27.7  \r\n##  Max.   :190   Max.   :100   Max.   :27.7  \r\n## [1] \"F 3\"\r\n##        h               w             BMI       \r\n##  Min.   :150.0   Min.   :50.0   Min.   :22.22  \r\n##  1st Qu.:152.5   1st Qu.:52.5   1st Qu.:22.53  \r\n##  Median :155.0   Median :55.0   Median :22.83  \r\n##  Mean   :155.0   Mean   :55.0   Mean   :22.83  \r\n##  3rd Qu.:157.5   3rd Qu.:57.5   3rd Qu.:23.13  \r\n##  Max.   :160.0   Max.   :60.0   Max.   :23.44  \r\n## [1] \"F 1\"\r\n##        h               w           BMI       \r\n##  Min.   :150.0   Min.   :50   Min.   :19.53  \r\n##  1st Qu.:152.5   1st Qu.:50   1st Qu.:20.20  \r\n##  Median :155.0   Median :50   Median :20.88  \r\n##  Mean   :155.0   Mean   :50   Mean   :20.88  \r\n##  3rd Qu.:157.5   3rd Qu.:50   3rd Qu.:21.55  \r\n##  Max.   :160.0   Max.   :50   Max.   :22.22  \r\n## [1] \"F 2\"\r\n##        h             w           BMI       \r\n##  Min.   :170   Min.   :60   Min.   :20.76  \r\n##  1st Qu.:170   1st Qu.:60   1st Qu.:20.76  \r\n##  Median :170   Median :60   Median :20.76  \r\n##  Mean   :170   Mean   :60   Mean   :20.76  \r\n##  3rd Qu.:170   3rd Qu.:60   3rd Qu.:20.76  \r\n##  Max.   :170   Max.   :60   Max.   :20.76  \r\n## Empty data.table (0 rows and 2 cols): gender,num\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>dat &lt;- data.frame(gender=c(&#8216;M&#8217;,&#8217;M&#8217;,&#8217;M&#8217;,&#8217;M&#8217;,&#8217;M&#8217;,&#8217;F&#8217;,&#8217;F&#8217;,&#8217;F&#8217;,&#8217;F&#8217;,&#8217;F&#8217;), num=c(1,2,3,1,2,3,1,2,3,1), h=c(170,180,190,180,170,150,160,170,160,150), w=c(80,70,100,80,60,50,50,60,60,50)) dat$BMI &lt;- dat$w\/(dat$h\/100)^2 table(dat$gender, dat$num) ## ## 1 2 3 ## F 2 1 2 ## M 2 2 1 \ucc45\uc758 113\ucabd\uc744 \ubcf4\uc790. \uc5ec\uae30\uc11c aggregate\uc774\ub098 by\uc640 \uac19\uc740 \ud568\uc218\ub97c \uc790\uc138\ud788 \uc124\uba85\ud574 \ub193\uc9c0 \uc54a\uc558\ub2e4. \uc65c\ub0d0\ud558\uba74 \uc774 \ud568\uc218\ub4e4\uc740 dplyr \ub610\ub294 data.table \ud328\ud0a4\uc9c0\ub97c \uc0ac\uc6a9\ud574\uc11c\ub3c4 \ub3d9\uc77c\ud55c \uacb0\uacfc\ub97c \uc0b0\ucd9c\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \uadf8\ub9ac\uace0 \uc694\uc998\uc5d0\ub294 \uc798 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31,78,371,28],"tags":[55,54,147,208,184,168],"jetpack_featured_media_url":"http:\/\/ds.sumeun.org\/wp-content\/uploads\/2021\/01\/aggregate2dplyr.png","_links":{"self":[{"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/posts\/2269"}],"collection":[{"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2269"}],"version-history":[{"count":2,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/posts\/2269\/revisions"}],"predecessor-version":[{"id":2272,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/posts\/2269\/revisions\/2272"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=\/wp\/v2\/media\/2271"}],"wp:attachment":[{"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2269"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ds.sumeun.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}