Cast a molten data frame into the reshaped or aggregated form you want

cast(data, formula = ... ~ variable, fun.aggregate=NULL, ...,
  margins=FALSE, subset=TRUE, df=FALSE, fill=NULL, add.missing=FALSE,
  value = guess_value(data))

Author

Hadley Wickham <h.wickham@gmail.com>

Arguments

data

molten data frame, see melt

formula

casting formula, see details for specifics

fun.aggregate

aggregation function

add.missing

fill in missing combinations?

value

name of value column

...

further arguments are passed to aggregating function

margins

vector of variable names (can include "grand_col" and "grand_row") to compute margins for, or TRUE to computer all margins

subset

logical vector to subset data set with before reshaping

df

argument used internally

fill

value with which to fill in structural missings, defaults to value from applying fun.aggregate to 0 length vector

Details

Along with melt and recast, this is the only function you should ever need to use. Once you have melted your data, cast will arrange it into the form you desire based on the specification given by formula.

The cast formula has the following format: x_variable + x_2 ~ y_variable + y_2 ~ z_variable ~ ... | list_variable + ... The order of the variables makes a difference. The first varies slowest, and the last fastest. There are a couple of special variables: "..." represents all other variables not used in the formula and "." represents no variable, so you can do formula=var1 ~ .

Creating high-D arrays is simple, and allows a class of transformations that are hard without apply and sweep

If the combination of variables you supply does not uniquely identify one row in the original data set, you will need to supply an aggregating function, fun.aggregate. This function should take a vector of numbers and return a summary statistic(s). It must return the same number of arguments regardless of the length of the input vector. If it returns multiple value you can use "result_variable" to control where they appear. By default they will appear as the last column variable.

The margins argument should be passed a vector of variable names, eg. c("month","day"). It will silently drop any variables that can not be margined over. You can also use "grand_col" and "grand_row" to get grand row and column margins respectively.

Subset takes a logical vector that will be evaluated in the context of data, so you can do something like subset = variable=="length"

All the actual reshaping is done by reshape1, see its documentation for details of the implementation

Examples

#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)

cast(aqm, day ~ month ~ variable)
#> , , variable = ozone
#> 
#>     month
#> day    5  6   7   8  9
#>   1   41 NA 135  39 96
#>   2   36 NA  49   9 78
#>   3   12 NA  32  16 73
#>   4   18 NA  NA  78 91
#>   5   NA NA  64  35 47
#>   6   28 NA  40  66 32
#>   7   23 29  77 122 20
#>   8   19 NA  97  89 23
#>   9    8 71  97 110 21
#>   10  NA 39  85  NA 24
#>   11   7 NA  NA  NA 44
#>   12  16 NA  10  44 21
#>   13  11 23  27  28 28
#>   14  14 NA  NA  65  9
#>   15  18 NA   7  NA 13
#>   16  14 21  48  22 46
#>   17  34 37  35  59 18
#>   18   6 20  61  23 13
#>   19  30 12  79  31 24
#>   20  11 13  63  44 16
#>   21   1 NA  16  21 13
#>   22  11 NA  NA   9 23
#>   23   4 NA  NA  NA 36
#>   24  32 NA  80  45  7
#>   25  NA NA 108 168 14
#>   26  NA NA  20  73 30
#>   27  NA NA  52  NA NA
#>   28  23 NA  82  76 14
#>   29  45 NA  50 118 18
#>   30 115 NA  64  84 20
#>   31  37 NA  59  85 NA
#> 
#> , , variable = solar.r
#> 
#>     month
#> day    5   6   7   8   9
#>   1  190 286 269  83 167
#>   2  118 287 248  24 197
#>   3  149 242 236  77 183
#>   4  313 186 101  NA 189
#>   5   NA 220 175  NA  95
#>   6   NA 264 314  NA  92
#>   7  299 127 276 255 252
#>   8   99 273 267 229 220
#>   9   19 291 272 207 230
#>   10 194 323 175 222 259
#>   11  NA 259 139 137 236
#>   12 256 250 264 192 259
#>   13 290 148 175 273 238
#>   14 274 332 291 157  24
#>   15  65 322  48  64 112
#>   16 334 191 260  71 237
#>   17 307 284 274  51 224
#>   18  78  37 285 115  27
#>   19 322 120 187 244 238
#>   20  44 137 220 190 201
#>   21   8 150   7 259 238
#>   22 320  59 258  36  14
#>   23  25  91 295 255 139
#>   24  92 250 294 212  49
#>   25  66 135 223 238  20
#>   26 266 127  81 215 193
#>   27  NA  47  82 153 145
#>   28  13  98 213 203 191
#>   29 252  31 275 225 131
#>   30 223 138 253 237 223
#>   31 279  NA 254 188  NA
#> 
#> , , variable = wind
#> 
#>     month
#> day     5    6    7    8    9
#>   1   7.4  8.6  4.1  6.9  6.9
#>   2   8.0  9.7  9.2 13.8  5.1
#>   3  12.6 16.1  9.2  7.4  2.8
#>   4  11.5  9.2 10.9  6.9  4.6
#>   5  14.3  8.6  4.6  7.4  7.4
#>   6  14.9 14.3 10.9  4.6 15.5
#>   7   8.6  9.7  5.1  4.0 10.9
#>   8  13.8  6.9  6.3 10.3 10.3
#>   9  20.1 13.8  5.7  8.0 10.9
#>   10  8.6 11.5  7.4  8.6  9.7
#>   11  6.9 10.9  8.6 11.5 14.9
#>   12  9.7  9.2 14.3 11.5 15.5
#>   13  9.2  8.0 14.9 11.5  6.3
#>   14 10.9 13.8 14.9  9.7 10.9
#>   15 13.2 11.5 14.3 11.5 11.5
#>   16 11.5 14.9  6.9 10.3  6.9
#>   17 12.0 20.7 10.3  6.3 13.8
#>   18 18.4  9.2  6.3  7.4 10.3
#>   19 11.5 11.5  5.1 10.9 10.3
#>   20  9.7 10.3 11.5 10.3  8.0
#>   21  9.7  6.3  6.9 15.5 12.6
#>   22 16.6  1.7  9.7 14.3  9.2
#>   23  9.7  4.6 11.5 12.6 10.3
#>   24 12.0  6.3  8.6  9.7 10.3
#>   25 16.6  8.0  8.0  3.4 16.6
#>   26 14.9  8.0  8.6  8.0  6.9
#>   27  8.0 10.3 12.0  5.7 13.2
#>   28 12.0 11.5  7.4  9.7 14.3
#>   29 14.9 14.9  7.4  2.3  8.0
#>   30  5.7  8.0  7.4  6.3 11.5
#>   31  7.4   NA  9.2  6.3   NA
#> 
#> , , variable = temp
#> 
#>     month
#> day   5  6  7  8  9
#>   1  67 78 84 81 91
#>   2  72 74 85 81 92
#>   3  74 67 81 82 93
#>   4  62 84 84 86 93
#>   5  56 85 83 85 87
#>   6  66 79 83 87 84
#>   7  65 82 88 89 80
#>   8  59 87 92 90 78
#>   9  61 90 92 90 75
#>   10 69 87 89 92 73
#>   11 74 93 82 86 81
#>   12 69 92 73 86 76
#>   13 66 82 81 82 77
#>   14 68 80 91 80 71
#>   15 58 79 80 79 71
#>   16 64 77 81 77 78
#>   17 66 72 82 79 67
#>   18 57 65 84 76 76
#>   19 68 73 87 78 68
#>   20 62 76 85 78 82
#>   21 59 77 74 77 64
#>   22 73 76 81 72 71
#>   23 61 76 82 75 81
#>   24 61 76 86 79 69
#>   25 57 75 85 81 63
#>   26 58 78 82 86 70
#>   27 57 73 86 88 77
#>   28 67 80 88 97 75
#>   29 81 77 86 94 76
#>   30 79 83 83 96 68
#>   31 76 NA 81 94 NA
#> 
cast(aqm, month ~ variable, mean)
#>   month    ozone  solar.r      wind     temp
#> 1     5 23.61538 181.2963 11.622581 65.54839
#> 2     6 29.44444 190.1667 10.266667 79.10000
#> 3     7 59.11538 216.4839  8.941935 83.90323
#> 4     8 59.96154 171.8571  8.793548 83.96774
#> 5     9 31.44828 167.4333 10.180000 76.90000
cast(aqm, month ~ . | variable, mean)
#> $ozone
#>   month    (all)
#> 1     5 23.61538
#> 2     6 29.44444
#> 3     7 59.11538
#> 4     8 59.96154
#> 5     9 31.44828
#> 
#> $solar.r
#>   month    (all)
#> 1     5 181.2963
#> 2     6 190.1667
#> 3     7 216.4839
#> 4     8 171.8571
#> 5     9 167.4333
#> 
#> $wind
#>   month     (all)
#> 1     5 11.622581
#> 2     6 10.266667
#> 3     7  8.941935
#> 4     8  8.793548
#> 5     9 10.180000
#> 
#> $temp
#>   month    (all)
#> 1     5 65.54839
#> 2     6 79.10000
#> 3     7 83.90323
#> 4     8 83.96774
#> 5     9 76.90000
#> 
cast(aqm, month ~ variable, mean, margins=c("grand_row", "grand_col"))
#>   month    ozone  solar.r      wind     temp    (all)
#> 1     5 23.61538 181.2963 11.622581 65.54839 68.70696
#> 2     6 29.44444 190.1667 10.266667 79.10000 87.38384
#> 3     7 59.11538 216.4839  8.941935 83.90323 93.49748
#> 4     8 59.96154 171.8571  8.793548 83.96774 79.71207
#> 5     9 31.44828 167.4333 10.180000 76.90000 71.82689
#> 6 (all) 42.12931 185.9315  9.957516 77.88235 80.05722
cast(aqm, day ~ month, mean, subset=variable=="ozone")
#>    day   5   6   7   8   9
#> 1    1  41 NaN 135  39  96
#> 2    2  36 NaN  49   9  78
#> 3    3  12 NaN  32  16  73
#> 4    4  18 NaN NaN  78  91
#> 5    5 NaN NaN  64  35  47
#> 6    6  28 NaN  40  66  32
#> 7    7  23  29  77 122  20
#> 8    8  19 NaN  97  89  23
#> 9    9   8  71  97 110  21
#> 10  10 NaN  39  85 NaN  24
#> 11  11   7 NaN NaN NaN  44
#> 12  12  16 NaN  10  44  21
#> 13  13  11  23  27  28  28
#> 14  14  14 NaN NaN  65   9
#> 15  15  18 NaN   7 NaN  13
#> 16  16  14  21  48  22  46
#> 17  17  34  37  35  59  18
#> 18  18   6  20  61  23  13
#> 19  19  30  12  79  31  24
#> 20  20  11  13  63  44  16
#> 21  21   1 NaN  16  21  13
#> 22  22  11 NaN NaN   9  23
#> 23  23   4 NaN NaN NaN  36
#> 24  24  32 NaN  80  45   7
#> 25  25 NaN NaN 108 168  14
#> 26  26 NaN NaN  20  73  30
#> 27  27 NaN NaN  52 NaN NaN
#> 28  28  23 NaN  82  76  14
#> 29  29  45 NaN  50 118  18
#> 30  30 115 NaN  64  84  20
#> 31  31  37 NaN  59  85 NaN
cast(aqm, month ~ variable, range)
#>   month ozone_X1 ozone_X2 solar.r_X1 solar.r_X2 wind_X1 wind_X2 temp_X1 temp_X2
#> 1     5        1      115          8        334     5.7    20.1      56      81
#> 2     6       12       71         31        332     1.7    20.7      65      93
#> 3     7        7      135          7        314     4.1    14.9      73      92
#> 4     8        9      168         24        273     2.3    15.5      72      97
#> 5     9        7       96         14        259     2.8    16.6      63      93
cast(aqm, month ~ variable + result_variable, range)
#>   month ozone_X1 ozone_X2 solar.r_X1 solar.r_X2 wind_X1 wind_X2 temp_X1 temp_X2
#> 1     5        1      115          8        334     5.7    20.1      56      81
#> 2     6       12       71         31        332     1.7    20.7      65      93
#> 3     7        7      135          7        314     4.1    14.9      73      92
#> 4     8        9      168         24        273     2.3    15.5      72      97
#> 5     9        7       96         14        259     2.8    16.6      63      93
cast(aqm, variable ~ month ~ result_variable,range)
#> , , result_variable = X1
#> 
#>          month
#> variable     5    6    7    8    9
#>   ozone    1.0 12.0  7.0  9.0  7.0
#>   solar.r  8.0 31.0  7.0 24.0 14.0
#>   wind     5.7  1.7  4.1  2.3  2.8
#>   temp    56.0 65.0 73.0 72.0 63.0
#> 
#> , , result_variable = X2
#> 
#>          month
#> variable      5     6     7     8     9
#>   ozone   115.0  71.0 135.0 168.0  96.0
#>   solar.r 334.0 332.0 314.0 273.0 259.0
#>   wind     20.1  20.7  14.9  15.5  16.6
#>   temp     81.0  93.0  92.0  97.0  93.0
#> 

#Chick weight example
names(ChickWeight) <- tolower(names(ChickWeight))
chick_m <- melt(ChickWeight, id=2:4, na.rm=TRUE)

cast(chick_m, time ~ variable, mean) # average effect of time
#>    time    weight
#> 1     0  41.06000
#> 2     2  49.22000
#> 3     4  59.95918
#> 4     6  74.30612
#> 5     8  91.24490
#> 6    10 107.83673
#> 7    12 129.24490
#> 8    14 143.81250
#> 9    16 168.08511
#> 10   18 190.19149
#> 11   20 209.71739
#> 12   21 218.68889
cast(chick_m, diet ~ variable, mean) # average effect of diet
#>   diet   weight
#> 1    1 102.6455
#> 2    2 122.6167
#> 3    3 142.9500
#> 4    4 135.2627
cast(chick_m, diet ~ time ~ variable, mean) # average effect of diet & time
#> , , variable = weight
#> 
#>     time
#> diet    0     2        4        6         8        10       12       14
#>    1 41.4 47.25 56.47368 66.78947  79.68421  93.05263 108.5263 123.3889
#>    2 40.7 49.40 59.80000 75.40000  91.70000 108.50000 131.3000 141.9000
#>    3 40.8 50.40 62.20000 77.90000  98.40000 117.10000 144.4000 164.5000
#>    4 41.0 51.80 64.50000 83.90000 105.60000 126.00000 151.4000 161.8000
#>     time
#> diet       16       18       20       21
#>    1 144.6471 158.9412 170.4118 177.7500
#>    2 164.7000 187.7000 205.6000 214.7000
#>    3 197.4000 233.1000 258.9000 270.3000
#>    4 182.0000 202.9000 233.8889 238.5556
#> 

# How many chicks at each time? - checking for balance
cast(chick_m, time ~ diet, length)
#>    time  1  2  3  4
#> 1     0 20 10 10 10
#> 2     2 20 10 10 10
#> 3     4 19 10 10 10
#> 4     6 19 10 10 10
#> 5     8 19 10 10 10
#> 6    10 19 10 10 10
#> 7    12 19 10 10 10
#> 8    14 18 10 10 10
#> 9    16 17 10 10 10
#> 10   18 17 10 10 10
#> 11   20 17 10 10  9
#> 12   21 16 10 10  9
cast(chick_m, chick ~ time, mean)
#>    chick  0  2   4   6   8  10  12  14  16  18  20  21
#> 1     18 39 35 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#> 2     16 41 45  49  51  57  51  54 NaN NaN NaN NaN NaN
#> 3     15 41 49  56  64  68  68  67  68 NaN NaN NaN NaN
#> 4     13 41 48  53  60  65  67  71  70  71  81  91  96
#> 5      9 42 51  59  68  85  96  90  92  93 100 100  98
#> 6     20 41 47  54  58  65  73  77  89  98 107 115 117
#> 7     10 41 44  52  63  74  81  89  96 101 112 120 124
#> 8      8 42 50  61  71  84  93 110 116 126 134 125 NaN
#> 9     17 42 51  61  72  83  89  98 103 113 123 133 142
#> 10    19 43 48  55  62  65  71  82  88 106 120 144 157
#> 11     4 42 49  56  67  74  87 102 108 136 154 160 157
#> 12     6 41 49  59  74  97 124 141 148 155 160 160 157
#> 13    11 43 51  63  84 112 139 168 177 182 184 181 175
#> 14     3 43 39  55  67  84  99 115 138 163 187 198 202
#> 15     1 42 51  59  64  76  93 106 125 149 171 199 205
#> 16    12 41 49  56  62  72  88 119 135 162 185 195 205
#> 17     2 40 49  58  72  84 103 122 138 162 187 209 215
#> 18     5 41 42  48  60  79 106 141 164 197 199 220 223
#> 19    14 41 49  62  79 101 128 164 192 227 248 259 266
#> 20     7 41 49  57  71  89 112 146 174 218 250 288 305
#> 21    24 42 52  58  74  66  68  70  71  72  72  76  74
#> 22    30 42 48  59  72  85  98 115 122 143 151 157 150
#> 23    22 41 55  64  77  90  95 108 111 131 148 164 167
#> 24    23 43 52  61  73  90 103 127 135 145 163 170 175
#> 25    27 39 46  58  73  87 100 115 123 144 163 185 192
#> 26    28 39 46  58  73  92 114 145 156 184 207 212 233
#> 27    26 42 48  57  74  93 114 136 147 169 205 236 251
#> 28    25 40 49  62  78 102 124 146 164 197 231 259 265
#> 29    29 39 48  59  74  87 106 134 150 187 230 279 309
#> 30    21 40 50  62  86 125 163 217 240 275 307 318 331
#> 31    33 39 50  63  77  96 111 137 144 151 146 156 147
#> 32    37 41 48  56  68  80  83 103 112 135 157 169 178
#> 33    36 39 48  61  76  98 116 145 166 198 227 225 220
#> 34    31 42 53  62  73  85 102 123 138 170 204 235 256
#> 35    39 42 50  61  78  89 109 130 146 170 214 250 272
#> 36    38 41 49  61  74  98 109 128 154 192 232 280 290
#> 37    32 41 49  65  82 107 129 159 179 221 263 291 305
#> 38    40 41 55  66  79 101 120 154 182 215 262 295 321
#> 39    34 41 49  63  85 107 134 164 186 235 294 327 341
#> 40    35 41 53  64  87 123 158 201 238 287 332 361 373
#> 41    44 42 51  65  86 103 118 127 138 145 146 NaN NaN
#> 42    45 41 50  61  78  98 117 135 141 147 174 197 196
#> 43    43 42 55  69  96 131 157 184 188 197 198 199 200
#> 44    41 42 51  66  85 103 124 155 153 175 184 199 204
#> 45    47 41 53  66  79 100 123 148 157 168 185 210 205
#> 46    49 40 53  64  85 108 128 152 166 184 203 233 237
#> 47    46 40 52  62  82 101 120 144 156 173 210 231 238
#> 48    50 41 54  67  84 105 122 155 175 205 234 264 264
#> 49    42 42 49  63  84 103 126 160 174 204 234 269 281
#> 50    48 39 50  62  80 104 125 154 170 222 261 303 322
cast(chick_m, chick ~ time, mean, subset=time < 10 & chick < 20)
#>   chick  0  2   4   6   8
#> 1    18 39 35 NaN NaN NaN
#> 2    16 41 45  49  51  57
#> 3    15 41 49  56  64  68
#> 4    13 41 48  53  60  65
#> 5     9 42 51  59  68  85

cast(chick_m, diet + chick ~ time)
#>    diet chick  0  2  4  6   8  10  12  14  16  18  20  21
#> 1     1    18 39 35 NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#> 2     1    16 41 45 49 51  57  51  54  NA  NA  NA  NA  NA
#> 3     1    15 41 49 56 64  68  68  67  68  NA  NA  NA  NA
#> 4     1    13 41 48 53 60  65  67  71  70  71  81  91  96
#> 5     1     9 42 51 59 68  85  96  90  92  93 100 100  98
#> 6     1    20 41 47 54 58  65  73  77  89  98 107 115 117
#> 7     1    10 41 44 52 63  74  81  89  96 101 112 120 124
#> 8     1     8 42 50 61 71  84  93 110 116 126 134 125  NA
#> 9     1    17 42 51 61 72  83  89  98 103 113 123 133 142
#> 10    1    19 43 48 55 62  65  71  82  88 106 120 144 157
#> 11    1     4 42 49 56 67  74  87 102 108 136 154 160 157
#> 12    1     6 41 49 59 74  97 124 141 148 155 160 160 157
#> 13    1    11 43 51 63 84 112 139 168 177 182 184 181 175
#> 14    1     3 43 39 55 67  84  99 115 138 163 187 198 202
#> 15    1     1 42 51 59 64  76  93 106 125 149 171 199 205
#> 16    1    12 41 49 56 62  72  88 119 135 162 185 195 205
#> 17    1     2 40 49 58 72  84 103 122 138 162 187 209 215
#> 18    1     5 41 42 48 60  79 106 141 164 197 199 220 223
#> 19    1    14 41 49 62 79 101 128 164 192 227 248 259 266
#> 20    1     7 41 49 57 71  89 112 146 174 218 250 288 305
#> 21    2    24 42 52 58 74  66  68  70  71  72  72  76  74
#> 22    2    30 42 48 59 72  85  98 115 122 143 151 157 150
#> 23    2    22 41 55 64 77  90  95 108 111 131 148 164 167
#> 24    2    23 43 52 61 73  90 103 127 135 145 163 170 175
#> 25    2    27 39 46 58 73  87 100 115 123 144 163 185 192
#> 26    2    28 39 46 58 73  92 114 145 156 184 207 212 233
#> 27    2    26 42 48 57 74  93 114 136 147 169 205 236 251
#> 28    2    25 40 49 62 78 102 124 146 164 197 231 259 265
#> 29    2    29 39 48 59 74  87 106 134 150 187 230 279 309
#> 30    2    21 40 50 62 86 125 163 217 240 275 307 318 331
#> 31    3    33 39 50 63 77  96 111 137 144 151 146 156 147
#> 32    3    37 41 48 56 68  80  83 103 112 135 157 169 178
#> 33    3    36 39 48 61 76  98 116 145 166 198 227 225 220
#> 34    3    31 42 53 62 73  85 102 123 138 170 204 235 256
#> 35    3    39 42 50 61 78  89 109 130 146 170 214 250 272
#> 36    3    38 41 49 61 74  98 109 128 154 192 232 280 290
#> 37    3    32 41 49 65 82 107 129 159 179 221 263 291 305
#> 38    3    40 41 55 66 79 101 120 154 182 215 262 295 321
#> 39    3    34 41 49 63 85 107 134 164 186 235 294 327 341
#> 40    3    35 41 53 64 87 123 158 201 238 287 332 361 373
#> 41    4    44 42 51 65 86 103 118 127 138 145 146  NA  NA
#> 42    4    45 41 50 61 78  98 117 135 141 147 174 197 196
#> 43    4    43 42 55 69 96 131 157 184 188 197 198 199 200
#> 44    4    41 42 51 66 85 103 124 155 153 175 184 199 204
#> 45    4    47 41 53 66 79 100 123 148 157 168 185 210 205
#> 46    4    49 40 53 64 85 108 128 152 166 184 203 233 237
#> 47    4    46 40 52 62 82 101 120 144 156 173 210 231 238
#> 48    4    50 41 54 67 84 105 122 155 175 205 234 264 264
#> 49    4    42 42 49 63 84 103 126 160 174 204 234 269 281
#> 50    4    48 39 50 62 80 104 125 154 170 222 261 303 322
cast(chick_m, chick ~ time ~ diet)
#> , , diet = 1
#> 
#>      time
#> chick  0  2  4  6   8  10  12  14  16  18  20  21
#>    18 39 35 NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    16 41 45 49 51  57  51  54  NA  NA  NA  NA  NA
#>    15 41 49 56 64  68  68  67  68  NA  NA  NA  NA
#>    13 41 48 53 60  65  67  71  70  71  81  91  96
#>    9  42 51 59 68  85  96  90  92  93 100 100  98
#>    20 41 47 54 58  65  73  77  89  98 107 115 117
#>    10 41 44 52 63  74  81  89  96 101 112 120 124
#>    8  42 50 61 71  84  93 110 116 126 134 125  NA
#>    17 42 51 61 72  83  89  98 103 113 123 133 142
#>    19 43 48 55 62  65  71  82  88 106 120 144 157
#>    4  42 49 56 67  74  87 102 108 136 154 160 157
#>    6  41 49 59 74  97 124 141 148 155 160 160 157
#>    11 43 51 63 84 112 139 168 177 182 184 181 175
#>    3  43 39 55 67  84  99 115 138 163 187 198 202
#>    1  42 51 59 64  76  93 106 125 149 171 199 205
#>    12 41 49 56 62  72  88 119 135 162 185 195 205
#>    2  40 49 58 72  84 103 122 138 162 187 209 215
#>    5  41 42 48 60  79 106 141 164 197 199 220 223
#>    14 41 49 62 79 101 128 164 192 227 248 259 266
#>    7  41 49 57 71  89 112 146 174 218 250 288 305
#>    24 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    30 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    22 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    23 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    27 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    28 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    26 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    25 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    29 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    21 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    33 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    37 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    36 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    31 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    39 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    38 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    32 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    40 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    34 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    35 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    44 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    45 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    43 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    41 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    47 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    49 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    46 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    50 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    42 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    48 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#> 
#> , , diet = 2
#> 
#>      time
#> chick  0  2  4  6   8  10  12  14  16  18  20  21
#>    18 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    16 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    15 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    13 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    9  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    20 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    10 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    8  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    17 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    19 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    4  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    6  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    11 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    3  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    1  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    12 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    2  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    5  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    14 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    7  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    24 42 52 58 74  66  68  70  71  72  72  76  74
#>    30 42 48 59 72  85  98 115 122 143 151 157 150
#>    22 41 55 64 77  90  95 108 111 131 148 164 167
#>    23 43 52 61 73  90 103 127 135 145 163 170 175
#>    27 39 46 58 73  87 100 115 123 144 163 185 192
#>    28 39 46 58 73  92 114 145 156 184 207 212 233
#>    26 42 48 57 74  93 114 136 147 169 205 236 251
#>    25 40 49 62 78 102 124 146 164 197 231 259 265
#>    29 39 48 59 74  87 106 134 150 187 230 279 309
#>    21 40 50 62 86 125 163 217 240 275 307 318 331
#>    33 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    37 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    36 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    31 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    39 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    38 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    32 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    40 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    34 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    35 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    44 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    45 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    43 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    41 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    47 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    49 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    46 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    50 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    42 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    48 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#> 
#> , , diet = 3
#> 
#>      time
#> chick  0  2  4  6   8  10  12  14  16  18  20  21
#>    18 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    16 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    15 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    13 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    9  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    20 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    10 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    8  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    17 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    19 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    4  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    6  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    11 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    3  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    1  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    12 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    2  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    5  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    14 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    7  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    24 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    30 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    22 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    23 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    27 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    28 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    26 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    25 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    29 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    21 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    33 39 50 63 77  96 111 137 144 151 146 156 147
#>    37 41 48 56 68  80  83 103 112 135 157 169 178
#>    36 39 48 61 76  98 116 145 166 198 227 225 220
#>    31 42 53 62 73  85 102 123 138 170 204 235 256
#>    39 42 50 61 78  89 109 130 146 170 214 250 272
#>    38 41 49 61 74  98 109 128 154 192 232 280 290
#>    32 41 49 65 82 107 129 159 179 221 263 291 305
#>    40 41 55 66 79 101 120 154 182 215 262 295 321
#>    34 41 49 63 85 107 134 164 186 235 294 327 341
#>    35 41 53 64 87 123 158 201 238 287 332 361 373
#>    44 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    45 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    43 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    41 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    47 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    49 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    46 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    50 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    42 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    48 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#> 
#> , , diet = 4
#> 
#>      time
#> chick  0  2  4  6   8  10  12  14  16  18  20  21
#>    18 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    16 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    15 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    13 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    9  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    20 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    10 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    8  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    17 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    19 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    4  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    6  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    11 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    3  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    1  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    12 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    2  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    5  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    14 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    7  NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    24 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    30 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    22 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    23 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    27 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    28 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    26 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    25 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    29 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    21 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    33 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    37 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    36 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    31 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    39 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    38 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    32 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    40 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    34 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    35 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA
#>    44 42 51 65 86 103 118 127 138 145 146  NA  NA
#>    45 41 50 61 78  98 117 135 141 147 174 197 196
#>    43 42 55 69 96 131 157 184 188 197 198 199 200
#>    41 42 51 66 85 103 124 155 153 175 184 199 204
#>    47 41 53 66 79 100 123 148 157 168 185 210 205
#>    49 40 53 64 85 108 128 152 166 184 203 233 237
#>    46 40 52 62 82 101 120 144 156 173 210 231 238
#>    50 41 54 67 84 105 122 155 175 205 234 264 264
#>    42 42 49 63 84 103 126 160 174 204 234 269 281
#>    48 39 50 62 80 104 125 154 170 222 261 303 322
#> 
cast(chick_m, diet + chick ~ time, mean, margins="diet")
#>    diet chick    0     2        4        6         8        10       12
#> 1     1    18 39.0 35.00      NaN      NaN       NaN       NaN      NaN
#> 2     1    16 41.0 45.00 49.00000 51.00000  57.00000  51.00000  54.0000
#> 3     1    15 41.0 49.00 56.00000 64.00000  68.00000  68.00000  67.0000
#> 4     1    13 41.0 48.00 53.00000 60.00000  65.00000  67.00000  71.0000
#> 5     1     9 42.0 51.00 59.00000 68.00000  85.00000  96.00000  90.0000
#> 6     1    20 41.0 47.00 54.00000 58.00000  65.00000  73.00000  77.0000
#> 7     1    10 41.0 44.00 52.00000 63.00000  74.00000  81.00000  89.0000
#> 8     1     8 42.0 50.00 61.00000 71.00000  84.00000  93.00000 110.0000
#> 9     1    17 42.0 51.00 61.00000 72.00000  83.00000  89.00000  98.0000
#> 10    1    19 43.0 48.00 55.00000 62.00000  65.00000  71.00000  82.0000
#> 11    1     4 42.0 49.00 56.00000 67.00000  74.00000  87.00000 102.0000
#> 12    1     6 41.0 49.00 59.00000 74.00000  97.00000 124.00000 141.0000
#> 13    1    11 43.0 51.00 63.00000 84.00000 112.00000 139.00000 168.0000
#> 14    1     3 43.0 39.00 55.00000 67.00000  84.00000  99.00000 115.0000
#> 15    1     1 42.0 51.00 59.00000 64.00000  76.00000  93.00000 106.0000
#> 16    1    12 41.0 49.00 56.00000 62.00000  72.00000  88.00000 119.0000
#> 17    1     2 40.0 49.00 58.00000 72.00000  84.00000 103.00000 122.0000
#> 18    1     5 41.0 42.00 48.00000 60.00000  79.00000 106.00000 141.0000
#> 19    1    14 41.0 49.00 62.00000 79.00000 101.00000 128.00000 164.0000
#> 20    1     7 41.0 49.00 57.00000 71.00000  89.00000 112.00000 146.0000
#> 21    1 (all) 41.4 47.25 56.47368 66.78947  79.68421  93.05263 108.5263
#> 22    2    24 42.0 52.00 58.00000 74.00000  66.00000  68.00000  70.0000
#> 23    2    30 42.0 48.00 59.00000 72.00000  85.00000  98.00000 115.0000
#> 24    2    22 41.0 55.00 64.00000 77.00000  90.00000  95.00000 108.0000
#> 25    2    23 43.0 52.00 61.00000 73.00000  90.00000 103.00000 127.0000
#> 26    2    27 39.0 46.00 58.00000 73.00000  87.00000 100.00000 115.0000
#> 27    2    28 39.0 46.00 58.00000 73.00000  92.00000 114.00000 145.0000
#> 28    2    26 42.0 48.00 57.00000 74.00000  93.00000 114.00000 136.0000
#> 29    2    25 40.0 49.00 62.00000 78.00000 102.00000 124.00000 146.0000
#> 30    2    29 39.0 48.00 59.00000 74.00000  87.00000 106.00000 134.0000
#> 31    2    21 40.0 50.00 62.00000 86.00000 125.00000 163.00000 217.0000
#> 32    2 (all) 40.7 49.40 59.80000 75.40000  91.70000 108.50000 131.3000
#> 33    3    33 39.0 50.00 63.00000 77.00000  96.00000 111.00000 137.0000
#> 34    3    37 41.0 48.00 56.00000 68.00000  80.00000  83.00000 103.0000
#> 35    3    36 39.0 48.00 61.00000 76.00000  98.00000 116.00000 145.0000
#> 36    3    31 42.0 53.00 62.00000 73.00000  85.00000 102.00000 123.0000
#> 37    3    39 42.0 50.00 61.00000 78.00000  89.00000 109.00000 130.0000
#> 38    3    38 41.0 49.00 61.00000 74.00000  98.00000 109.00000 128.0000
#> 39    3    32 41.0 49.00 65.00000 82.00000 107.00000 129.00000 159.0000
#> 40    3    40 41.0 55.00 66.00000 79.00000 101.00000 120.00000 154.0000
#> 41    3    34 41.0 49.00 63.00000 85.00000 107.00000 134.00000 164.0000
#> 42    3    35 41.0 53.00 64.00000 87.00000 123.00000 158.00000 201.0000
#> 43    3 (all) 40.8 50.40 62.20000 77.90000  98.40000 117.10000 144.4000
#> 44    4    44 42.0 51.00 65.00000 86.00000 103.00000 118.00000 127.0000
#> 45    4    45 41.0 50.00 61.00000 78.00000  98.00000 117.00000 135.0000
#> 46    4    43 42.0 55.00 69.00000 96.00000 131.00000 157.00000 184.0000
#> 47    4    41 42.0 51.00 66.00000 85.00000 103.00000 124.00000 155.0000
#> 48    4    47 41.0 53.00 66.00000 79.00000 100.00000 123.00000 148.0000
#> 49    4    49 40.0 53.00 64.00000 85.00000 108.00000 128.00000 152.0000
#> 50    4    46 40.0 52.00 62.00000 82.00000 101.00000 120.00000 144.0000
#> 51    4    50 41.0 54.00 67.00000 84.00000 105.00000 122.00000 155.0000
#> 52    4    42 42.0 49.00 63.00000 84.00000 103.00000 126.00000 160.0000
#> 53    4    48 39.0 50.00 62.00000 80.00000 104.00000 125.00000 154.0000
#> 54    4 (all) 41.0 51.80 64.50000 83.90000 105.60000 126.00000 151.4000
#>          14       16       18       20       21
#> 1       NaN      NaN      NaN      NaN      NaN
#> 2       NaN      NaN      NaN      NaN      NaN
#> 3   68.0000      NaN      NaN      NaN      NaN
#> 4   70.0000  71.0000  81.0000  91.0000  96.0000
#> 5   92.0000  93.0000 100.0000 100.0000  98.0000
#> 6   89.0000  98.0000 107.0000 115.0000 117.0000
#> 7   96.0000 101.0000 112.0000 120.0000 124.0000
#> 8  116.0000 126.0000 134.0000 125.0000      NaN
#> 9  103.0000 113.0000 123.0000 133.0000 142.0000
#> 10  88.0000 106.0000 120.0000 144.0000 157.0000
#> 11 108.0000 136.0000 154.0000 160.0000 157.0000
#> 12 148.0000 155.0000 160.0000 160.0000 157.0000
#> 13 177.0000 182.0000 184.0000 181.0000 175.0000
#> 14 138.0000 163.0000 187.0000 198.0000 202.0000
#> 15 125.0000 149.0000 171.0000 199.0000 205.0000
#> 16 135.0000 162.0000 185.0000 195.0000 205.0000
#> 17 138.0000 162.0000 187.0000 209.0000 215.0000
#> 18 164.0000 197.0000 199.0000 220.0000 223.0000
#> 19 192.0000 227.0000 248.0000 259.0000 266.0000
#> 20 174.0000 218.0000 250.0000 288.0000 305.0000
#> 21 123.3889 144.6471 158.9412 170.4118 177.7500
#> 22  71.0000  72.0000  72.0000  76.0000  74.0000
#> 23 122.0000 143.0000 151.0000 157.0000 150.0000
#> 24 111.0000 131.0000 148.0000 164.0000 167.0000
#> 25 135.0000 145.0000 163.0000 170.0000 175.0000
#> 26 123.0000 144.0000 163.0000 185.0000 192.0000
#> 27 156.0000 184.0000 207.0000 212.0000 233.0000
#> 28 147.0000 169.0000 205.0000 236.0000 251.0000
#> 29 164.0000 197.0000 231.0000 259.0000 265.0000
#> 30 150.0000 187.0000 230.0000 279.0000 309.0000
#> 31 240.0000 275.0000 307.0000 318.0000 331.0000
#> 32 141.9000 164.7000 187.7000 205.6000 214.7000
#> 33 144.0000 151.0000 146.0000 156.0000 147.0000
#> 34 112.0000 135.0000 157.0000 169.0000 178.0000
#> 35 166.0000 198.0000 227.0000 225.0000 220.0000
#> 36 138.0000 170.0000 204.0000 235.0000 256.0000
#> 37 146.0000 170.0000 214.0000 250.0000 272.0000
#> 38 154.0000 192.0000 232.0000 280.0000 290.0000
#> 39 179.0000 221.0000 263.0000 291.0000 305.0000
#> 40 182.0000 215.0000 262.0000 295.0000 321.0000
#> 41 186.0000 235.0000 294.0000 327.0000 341.0000
#> 42 238.0000 287.0000 332.0000 361.0000 373.0000
#> 43 164.5000 197.4000 233.1000 258.9000 270.3000
#> 44 138.0000 145.0000 146.0000      NaN      NaN
#> 45 141.0000 147.0000 174.0000 197.0000 196.0000
#> 46 188.0000 197.0000 198.0000 199.0000 200.0000
#> 47 153.0000 175.0000 184.0000 199.0000 204.0000
#> 48 157.0000 168.0000 185.0000 210.0000 205.0000
#> 49 166.0000 184.0000 203.0000 233.0000 237.0000
#> 50 156.0000 173.0000 210.0000 231.0000 238.0000
#> 51 175.0000 205.0000 234.0000 264.0000 264.0000
#> 52 174.0000 204.0000 234.0000 269.0000 281.0000
#> 53 170.0000 222.0000 261.0000 303.0000 322.0000
#> 54 161.8000 182.0000 202.9000 233.8889 238.5556

#Tips example
cast(melt(tips), sex ~ smoker, mean, subset=variable=="total_bill")
#> Using sex, smoker, day, time as id variables
#>      sex       No      Yes
#> 1 Female 18.10519 17.97788
#> 2   Male 19.79124 22.28450
cast(melt(tips), sex ~ smoker | variable, mean)
#> Using sex, smoker, day, time as id variables
#> $total_bill
#>      sex       No      Yes
#> 1 Female 18.10519 17.97788
#> 2   Male 19.79124 22.28450
#> 
#> $tip
#>      sex       No      Yes
#> 1 Female 2.773519 2.931515
#> 2   Male 3.113402 3.051167
#> 
#> $size
#>      sex       No      Yes
#> 1 Female 2.592593 2.242424
#> 2   Male 2.711340 2.500000
#> 

ff_d <- melt(french_fries, id=1:4, na.rm=TRUE)
cast(ff_d, subject ~ time, length)
#>    subject  1  2  3  4  5  6  7  8  9 10
#> 1        3 30 30 30 30 30 30 30 30 30  0
#> 2       10 30 30 30 30 30 30 30 30 30 30
#> 3       15 30 30 30 30 25 30 30 30 30 30
#> 4       16 30 30 30 30 30 30 30 29 30 30
#> 5       19 30 30 30 30 30 30 30 30 30 30
#> 6       31 30 30 30 30 30 30 30 30  0 30
#> 7       51 30 30 30 30 30 30 30 30 30 30
#> 8       52 30 30 30 30 30 30 30 30 30 30
#> 9       63 30 30 30 30 30 30 30 30 30 30
#> 10      78 30 30 30 30 30 30 30 30 30 30
#> 11      79 30 30 30 30 30 30 29 28 30  0
#> 12      86 30 30 30 30 30 30 30 30  0 30
cast(ff_d, subject ~ time, length, fill=0)
#>    subject  1  2  3  4  5  6  7  8  9 10
#> 1        3 30 30 30 30 30 30 30 30 30  0
#> 2       10 30 30 30 30 30 30 30 30 30 30
#> 3       15 30 30 30 30 25 30 30 30 30 30
#> 4       16 30 30 30 30 30 30 30 29 30 30
#> 5       19 30 30 30 30 30 30 30 30 30 30
#> 6       31 30 30 30 30 30 30 30 30  0 30
#> 7       51 30 30 30 30 30 30 30 30 30 30
#> 8       52 30 30 30 30 30 30 30 30 30 30
#> 9       63 30 30 30 30 30 30 30 30 30 30
#> 10      78 30 30 30 30 30 30 30 30 30 30
#> 11      79 30 30 30 30 30 30 29 28 30  0
#> 12      86 30 30 30 30 30 30 30 30  0 30
cast(ff_d, subject ~ time, function(x) 30 - length(x))
#>    subject 1 2 3 4 5 6 7 8  9 10
#> 1        3 0 0 0 0 0 0 0 0  0 30
#> 2       10 0 0 0 0 0 0 0 0  0  0
#> 3       15 0 0 0 0 5 0 0 0  0  0
#> 4       16 0 0 0 0 0 0 0 1  0  0
#> 5       19 0 0 0 0 0 0 0 0  0  0
#> 6       31 0 0 0 0 0 0 0 0 30  0
#> 7       51 0 0 0 0 0 0 0 0  0  0
#> 8       52 0 0 0 0 0 0 0 0  0  0
#> 9       63 0 0 0 0 0 0 0 0  0  0
#> 10      78 0 0 0 0 0 0 0 0  0  0
#> 11      79 0 0 0 0 0 0 1 2  0 30
#> 12      86 0 0 0 0 0 0 0 0 30  0
cast(ff_d, subject ~ time, function(x) 30 - length(x), fill=30)
#>    subject 1 2 3 4 5 6 7 8  9 10
#> 1        3 0 0 0 0 0 0 0 0  0 30
#> 2       10 0 0 0 0 0 0 0 0  0  0
#> 3       15 0 0 0 0 5 0 0 0  0  0
#> 4       16 0 0 0 0 0 0 0 1  0  0
#> 5       19 0 0 0 0 0 0 0 0  0  0
#> 6       31 0 0 0 0 0 0 0 0 30  0
#> 7       51 0 0 0 0 0 0 0 0  0  0
#> 8       52 0 0 0 0 0 0 0 0  0  0
#> 9       63 0 0 0 0 0 0 0 0  0  0
#> 10      78 0 0 0 0 0 0 0 0  0  0
#> 11      79 0 0 0 0 0 0 1 2  0 30
#> 12      86 0 0 0 0 0 0 0 0 30  0
cast(ff_d, variable ~ ., c(min, max))
#>   variable min  max
#> 1   potato   0 14.9
#> 2  buttery   0 11.2
#> 3   grassy   0 11.1
#> 4   rancid   0 14.9
#> 5   painty   0 13.1
cast(ff_d, variable ~ ., function(x) quantile(x,c(0.25,0.5)))
#>   variable X25. X50.
#> 1   potato  4.0  7.2
#> 2  buttery  0.0  0.7
#> 3   grassy  0.0  0.0
#> 4   rancid  0.4  2.7
#> 5   painty  0.0  0.6
cast(ff_d, treatment ~ variable, mean, margins=c("grand_col", "grand_row"))
#>   treatment   potato  buttery    grassy   rancid   painty    (all)
#> 1         1 6.887931 1.780087 0.6491379 4.065517 2.583621 3.194478
#> 2         2 7.001724 1.973913 0.6629310 3.624569 2.455844 3.146413
#> 3         3 6.967965 1.717749 0.6805195 3.866667 2.525541 3.151688
#> 4     (all) 6.952518 1.823699 0.6641727 3.852230 2.521758 3.164218
cast(ff_d, treatment + subject ~ variable, mean, margins="treatment")
#>    treatment subject    potato   buttery     grassy    rancid     painty
#> 1          1       3  6.216667 0.3722222 0.18888889 2.1055556 3.11111111
#> 2          1      10  9.955000 6.7500000 0.58500000 4.0200000 1.37500000
#> 3          1      15  3.360000 0.7200000 0.42000000 3.9650000 3.26000000
#> 4          1      16  6.495000 3.2600000 0.75500000 4.1200000 1.23000000
#> 5          1      19  9.385000 3.0550000 2.02000000 5.3600000 2.77500000
#> 6          1      31  8.844444 0.4444444 0.08888889 5.9444444 3.21111111
#> 7          1      51 10.675000 2.6400000 1.05000000 5.1500000 1.95500000
#> 8          1      52  5.060000 0.8050000 0.87500000 4.2850000 2.64500000
#> 9          1      63  6.775000 0.0250000 0.00000000 6.0550000 3.85500000
#> 10         1      78  3.620000 0.7350000 0.54000000 1.5050000 3.49000000
#> 11         1      79  8.061111 0.2823529 0.34444444 0.5666667 0.00000000
#> 12         1      86  4.183333 1.7722222 0.80555556 5.4944444 4.10555556
#> 13         1   (all)  6.887931 1.7800866 0.64913793 4.0655172 2.58362069
#> 14         2       3  6.738889 0.5888889 0.10555556 3.1388889 2.47777778
#> 15         2      10  9.995000 6.9800000 0.47500000 2.1500000 0.82000000
#> 16         2      15  4.405000 1.3150000 0.34000000 2.2850000 2.06000000
#> 17         2      16  6.450000 3.3736842 1.05500000 3.4000000 0.45500000
#> 18         2      19  8.640000 2.4500000 1.13500000 5.4050000 4.15500000
#> 19         2      31  8.033333 0.6166667 0.15555556 6.0500000 5.06111111
#> 20         2      51  9.985000 3.7950000 1.57000000 4.6700000 2.25500000
#> 21         2      52  5.515000 1.0250000 1.18000000 4.2250000 2.19500000
#> 22         2      63  8.415000 0.1050000 0.01000000 5.0900000 4.35500000
#> 23         2      78  3.780000 0.2950000 0.75500000 1.5500000 2.72500000
#> 24         2      79  7.938889 0.6941176 0.25555556 1.0333333 0.00000000
#> 25         2      86  3.994444 2.0611111 0.78333333 4.5222222 2.84444444
#> 26         2   (all)  7.001724 1.9739130 0.66293103 3.6245690 2.45584416
#> 27         3       3  5.294444 0.7666667 0.09444444 2.8555556 2.86666667
#> 28         3      10 10.030000 6.4500000 0.14500000 3.1100000 0.69000000
#> 29         3      15  3.963158 0.9894737 0.44210526 2.5473684 2.36842105
#> 30         3      16  6.860000 2.7000000 1.12500000 3.2000000 0.55500000
#> 31         3      19  8.740000 1.7250000 2.07000000 7.2400000 3.90500000
#> 32         3      31  9.027778 0.6500000 0.17222222 6.5777778 5.12777778
#> 33         3      51 10.220000 3.1300000 1.35000000 4.9150000 2.54500000
#> 34         3      52  5.475000 0.8650000 0.76500000 3.1600000 2.66000000
#> 35         3      63  8.060000 0.0650000 0.12500000 6.1850000 3.10000000
#> 36         3      78  4.000000 0.7050000 0.66500000 1.1850000 3.52000000
#> 37         3      79  7.733333 0.5722222 0.11666667 1.1777778 0.02777778
#> 38         3      86  3.866667 1.6333333 0.94444444 4.1055556 3.02777778
#> 39         3   (all)  6.967965 1.7177489 0.68051948 3.8666667 2.52554113