library(reshape2)#加载reshape2包
names(airquality) <- tolower(names(airquality))
head(airquality)
## ozone solar.r wind temp month day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
str(airquality)
## 'data.frame': 153 obs. of 6 variables:
## $ ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
## $ solar.r: int 190 118 149 313 NA NA 299 99 19 194 ...
## $ wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
## $ temp : int 67 72 74 62 56 66 65 59 61 69 ...
## $ month : int 5 5 5 5 5 5 5 5 5 5 ...
## $ day : int 1 2 3 4 5 6 7 8 9 10 ...
aqm <- melt(airquality, id = c("month", "day"), na.rm = TRUE)
head(aqm)
## month day variable value
## 1 5 1 ozone 41
## 2 5 2 ozone 36
## 3 5 3 ozone 12
## 4 5 4 ozone 18
## 6 5 6 ozone 28
## 7 5 7 ozone 23
str(aqm)
## 'data.frame': 568 obs. of 4 variables:
## $ month : int 5 5 5 5 5 5 5 5 5 5 ...
## $ day : int 1 2 3 4 6 7 8 9 11 12 ...
## $ variable: Factor w/ 4 levels "ozone","solar.r",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ value : num 41 36 12 18 28 23 19 8 7 16 ...
# 变量day的值为行标签,month的值为变量名,variable的值为列表第三维度的名称,将数据按variable的值分块,value填充列表
acast(data = aqm, formula = day ~ month ~ variable)
## , , ozone
##
## 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
##
## , , solar.r
##
## 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
##
## , , wind
##
## 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
##
## , , temp
##
## 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
# 按variable的取值分片,计算每月的日均值:
acast(data = aqm, formula = month ~ variable, fun.aggregate = mean)
## ozone solar.r wind temp
## 5 23.61538 181.2963 11.622581 65.54839
## 6 29.44444 190.1667 10.266667 79.10000
## 7 59.11538 216.4839 8.941935 83.90323
## 8 59.96154 171.8571 8.793548 83.96774
## 9 31.44828 167.4333 10.180000 76.90000
# margins=TRUE 增加总体均值:
acast(data = aqm, formula = month ~ variable, fun.aggregate = mean, margins = TRUE)
## ozone solar.r wind temp (all)
## 5 23.61538 181.2963 11.622581 65.54839 68.70696
## 6 29.44444 190.1667 10.266667 79.10000 87.38384
## 7 59.11538 216.4839 8.941935 83.90323 93.49748
## 8 59.96154 171.8571 8.793548 83.96774 79.71207
## 9 31.44828 167.4333 10.180000 76.90000 71.82689
## (all) 42.12931 185.9315 9.957516 77.88235 80.05722
acast(aqm, month ~ variable, mean, margins = "month")
## ozone solar.r wind temp
## 5 23.61538 181.2963 11.622581 65.54839
## 6 29.44444 190.1667 10.266667 79.10000
## 7 59.11538 216.4839 8.941935 83.90323
## 8 59.96154 171.8571 8.793548 83.96774
## 9 31.44828 167.4333 10.180000 76.90000
## (all) 42.12931 185.9315 9.957516 77.88235
acast(aqm, month ~ variable, mean, margins = "variable")
## ozone solar.r wind temp (all)
## 5 23.61538 181.2963 11.622581 65.54839 68.70696
## 6 29.44444 190.1667 10.266667 79.10000 87.38384
## 7 59.11538 216.4839 8.941935 83.90323 93.49748
## 8 59.96154 171.8571 8.793548 83.96774 79.71207
## 9 31.44828 167.4333 10.180000 76.90000 71.82689
# dcast输出的数据只能是数据框,二维的,month作为数据框的一列,而不是行名称。
dcast(data = aqm, formula = month ~ variable, fun.aggregate = mean, margins = c("month",
"variable"))
## 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
dcast(data = aqm, formula = month ~ variable, fun.aggregate = mean, value.var = "value",
margins = TRUE)
## 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
library(plyr) #加载plyr包,为了使用'.'
# subset=.()实现对结果数据的筛选
acast(aqm, variable ~ month, mean, subset = .(variable == "ozone"))
## 5 6 7 8 9
## ozone 23.61538 29.44444 59.11538 59.96154 31.44828
acast(aqm, variable ~ month, mean, subset = .(month == c(5, 9)))
## 5 9
## ozone 26.38462 32.06667
## solar.r 203.71429 158.33333
## wind 11.38125 10.42667
## temp 65.73333 77.06667
acast(aqm, variable ~ month, mean, subset = .(variable == "ozone", month ==
c(5, 9)))
## 5 9
## ozone 26.38462 32.06667
dcast(aqm, variable ~ month, mean, subset = .(variable == "ozone"))
## variable 5 6 7 8 9
## 1 ozone 23.61538 29.44444 59.11538 59.96154 31.44828
names(ChickWeight) <- tolower(names(ChickWeight))
chick_m <- melt(ChickWeight, id = 2:4, na.rm = TRUE)
head(chick_m)
## time chick diet variable value
## 1 0 1 1 weight 42
## 2 2 1 1 weight 51
## 3 4 1 1 weight 59
## 4 6 1 1 weight 64
## 5 8 1 1 weight 76
## 6 10 1 1 weight 93
str(chick_m)
## 'data.frame': 578 obs. of 5 variables:
## $ time : num 0 2 4 6 8 10 12 14 16 18 ...
## $ chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
## $ diet : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
## $ variable: Factor w/ 1 level "weight": 1 1 1 1 1 1 1 1 1 1 ...
## $ value : num 42 51 59 64 76 93 106 125 149 171 ...
dcast(chick_m, time ~ variable, mean)
## 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
dcast(chick_m, diet ~ variable, mean)
## diet weight
## 1 1 102.6455
## 2 2 122.6167
## 3 3 142.9500
## 4 4 135.2627
acast(chick_m, diet ~ time, mean)
## 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
## 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
acast(chick_m, time ~ diet, length)
## 1 2 3 4
## 0 20 10 10 10
## 2 20 10 10 10
## 4 19 10 10 10
## 6 19 10 10 10
## 8 19 10 10 10
## 10 19 10 10 10
## 12 19 10 10 10
## 14 18 10 10 10
## 16 17 10 10 10
## 18 17 10 10 10
## 20 17 10 10 9
## 21 16 10 10 9
acast(chick_m, chick ~ time, mean, subset = .(time < 10 & chick < 20))
## 0 2 4 6 8
## 18 39 35 NaN NaN NaN
## 16 41 45 49 51 57
## 15 41 49 56 64 68
## 13 41 48 53 60 65
## 9 42 51 59 68 85
acast(chick_m, chick ~ time, length, subset = .(time < 10 & chick < 20))
## 0 2 4 6 8
## 18 1 1 0 0 0
## 16 1 1 1 1 1
## 15 1 1 1 1 1
## 13 1 1 1 1 1
## 9 1 1 1 1 1
dcast(chick_m, chick ~ time, length, subset = .(time < 10 & chick < 20))
## chick 0 2 4 6 8
## 1 18 1 1 0 0 0
## 2 16 1 1 1 1 1
## 3 15 1 1 1 1 1
## 4 13 1 1 1 1 1
## 5 9 1 1 1 1 1
acast(chick_m, time ~ diet, length)
## 1 2 3 4
## 0 20 10 10 10
## 2 20 10 10 10
## 4 19 10 10 10
## 6 19 10 10 10
## 8 19 10 10 10
## 10 19 10 10 10
## 12 19 10 10 10
## 14 18 10 10 10
## 16 17 10 10 10
## 18 17 10 10 10
## 20 17 10 10 9
## 21 16 10 10 9
dcast(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
colsplit(string, pattern, names) - string: character vector or factor to split up - pattern: regular expression to split on - names: names for output columns
x <- c("a_1", "a_2", "b_2", "c_3")
vars <- colsplit(x, "_", c("trt", "time"))
vars
## trt time
## 1 a 1
## 2 a 2
## 3 b 2
## 4 c 3
str(vars)
## 'data.frame': 4 obs. of 2 variables:
## $ trt : chr "a" "a" "b" "c"
## $ time: int 1 2 2 3
colsplit(c("a_1_1", "a_2_2", "b_2_2", "c_3"), "_", c("trt", "time", "time2"))
## trt time time2
## 1 a 1 1
## 2 a 2 2
## 3 b 2 2
## 4 c 3 NA
melt(data, varnames = names(dimnames(data)), …,na.rm = FALSE, as.is = FALSE, value.name = “value”)
a <- array(c(1:23, NA), c(2, 3, 4))
a
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 7 9 11
## [2,] 8 10 12
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 13 15 17
## [2,] 14 16 18
##
## , , 4
##
## [,1] [,2] [,3]
## [1,] 19 21 23
## [2,] 20 22 NA
melt(a)
## Var1 Var2 Var3 value
## 1 1 1 1 1
## 2 2 1 1 2
## 3 1 2 1 3
## 4 2 2 1 4
## 5 1 3 1 5
## 6 2 3 1 6
## 7 1 1 2 7
## 8 2 1 2 8
## 9 1 2 2 9
## 10 2 2 2 10
## 11 1 3 2 11
## 12 2 3 2 12
## 13 1 1 3 13
## 14 2 1 3 14
## 15 1 2 3 15
## 16 2 2 3 16
## 17 1 3 3 17
## 18 2 3 3 18
## 19 1 1 4 19
## 20 2 1 4 20
## 21 1 2 4 21
## 22 2 2 4 22
## 23 1 3 4 23
## 24 2 3 4 NA
melt(a, na.rm = TRUE)
## Var1 Var2 Var3 value
## 1 1 1 1 1
## 2 2 1 1 2
## 3 1 2 1 3
## 4 2 2 1 4
## 5 1 3 1 5
## 6 2 3 1 6
## 7 1 1 2 7
## 8 2 1 2 8
## 9 1 2 2 9
## 10 2 2 2 10
## 11 1 3 2 11
## 12 2 3 2 12
## 13 1 1 3 13
## 14 2 1 3 14
## 15 1 2 3 15
## 16 2 2 3 16
## 17 1 3 3 17
## 18 2 3 3 18
## 19 1 1 4 19
## 20 2 1 4 20
## 21 1 2 4 21
## 22 2 2 4 22
## 23 1 3 4 23
melt(a, varnames = c("X", "Y", "Z"))
## X Y Z value
## 1 1 1 1 1
## 2 2 1 1 2
## 3 1 2 1 3
## 4 2 2 1 4
## 5 1 3 1 5
## 6 2 3 1 6
## 7 1 1 2 7
## 8 2 1 2 8
## 9 1 2 2 9
## 10 2 2 2 10
## 11 1 3 2 11
## 12 2 3 2 12
## 13 1 1 3 13
## 14 2 1 3 14
## 15 1 2 3 15
## 16 2 2 3 16
## 17 1 3 3 17
## 18 2 3 3 18
## 19 1 1 4 19
## 20 2 1 4 20
## 21 1 2 4 21
## 22 2 2 4 22
## 23 1 3 4 23
## 24 2 3 4 NA
melt(data, id.vars, measure.vars,variable.name = “variable”, …, na.rm = FALSE, value.name = “value”,factorsAsStrings = TRUE)
names(airquality) <- tolower(names(airquality))
head(airquality)
## ozone solar.r wind temp month day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
str(airquality)
## 'data.frame': 153 obs. of 6 variables:
## $ ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
## $ solar.r: int 190 118 149 313 NA NA 299 99 19 194 ...
## $ wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
## $ temp : int 67 72 74 62 56 66 65 59 61 69 ...
## $ month : int 5 5 5 5 5 5 5 5 5 5 ...
## $ day : int 1 2 3 4 5 6 7 8 9 10 ...
head(melt(data = airquality, id.vars = c("month", "day")))
## month day variable value
## 1 5 1 ozone 41
## 2 5 2 ozone 36
## 3 5 3 ozone 12
## 4 5 4 ozone 18
## 5 5 5 ozone NA
## 6 5 6 ozone 28
head(melt(data = airquality, id.vars = c("month", "day"), measure.vars = c("ozone",
"temp"), variable.name = "vname", value.name = "valuename", na.rm = TRUE))
## month day vname valuename
## 1 5 1 ozone 41
## 2 5 2 ozone 36
## 3 5 3 ozone 12
## 4 5 4 ozone 18
## 6 5 6 ozone 28
## 7 5 7 ozone 23
str(french_fries) #数据集
## 'data.frame': 696 obs. of 9 variables:
## $ time : Factor w/ 10 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ treatment: Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
## $ subject : Factor w/ 12 levels "3","10","15",..: 1 1 2 2 3 3 4 4 5 5 ...
## $ rep : num 1 2 1 2 1 2 1 2 1 2 ...
## $ potato : num 2.9 14 11 9.9 1.2 8.8 9 8.2 7 13 ...
## $ buttery : num 0 0 6.4 5.9 0.1 3 2.6 4.4 3.2 0 ...
## $ grassy : num 0 0 0 2.9 0 3.6 0.4 0.3 0 3.1 ...
## $ rancid : num 0 1.1 0 2.2 1.1 1.5 0.1 1.4 4.9 4.3 ...
## $ painty : num 5.5 0 0 0 5.1 2.3 0.2 4 3.2 10.3 ...
str(smiths) #数据集
## 'data.frame': 2 obs. of 5 variables:
## $ subject: Factor w/ 2 levels "John Smith","Mary Smith": 1 2
## $ time : int 1 1
## $ age : num 33 NA
## $ weight : num 90 NA
## $ height : num 1.87 1.54
str(tips) #数据集
## 'data.frame': 244 obs. of 7 variables:
## $ total_bill: num 17 10.3 21 23.7 24.6 ...
## $ tip : num 1.01 1.66 3.5 3.31 3.61 4.71 2 3.12 1.96 3.23 ...
## $ sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 1 2 2 2 2 2 ...
## $ smoker : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ day : Factor w/ 4 levels "Fri","Sat","Sun",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ time : Factor w/ 2 levels "Dinner","Lunch": 1 1 1 1 1 1 1 1 1 1 ...
## $ size : int 2 3 3 2 4 4 2 4 2 2 ...