John Bastiaansen
Albart Coster
Hier leren we om gegevens in R samen te vatten:
| X1 | X2 | 2012-01-30 | 2012-02-28 | 2012-03-29 | 2012-04-28 |
|---|---|---|---|---|---|
| 1 laktatie | 0-30 DIL | 25.86 | 30.05 | 30.45 | 29.67 |
| 1 laktatie | 31-61 DIL | 35.00 | 31.67 | 36.03 | 34.87 |
| 1 laktatie | 61-200 DIL | 35.41 | 34.64 | 35.24 | 36.19 |
| 1 laktatie | 200+ DIL | 32.95 | 31.51 | 32.66 | 35.23 |
| 2 laktaties | 0-30 DIL | 41.93 | 38.61 | 42.94 | 44.22 |
| 2 laktaties | 31-61 DIL | 47.73 | 48.71 | 43.52 | 55.97 |
| 2 laktaties | 61-200 DIL | 43.48 | 42.35 | 42.88 | 46.20 |
| 2 laktaties | 200+ DIL | 31.41 | 31.81 | 34.05 | 37.51 |
| 3 + laktaties | 0-30 DIL | 44.97 | 45.29 | 44.45 | 45.06 |
| 3 + laktaties | 31-61 DIL | 53.66 | 49.69 | 51.83 | 54.90 |
| 3 + laktaties | 61-200 DIL | 43.81 | 43.34 | 44.95 | 47.48 |
| 3 + laktaties | 200+ DIL | 32.27 | 31.63 | 32.45 | 33.79 |
df <- read.table("melkproducties.dat", head = TRUE)
head(df)
## DATUM ID NLACT DIL PROD_KG VET_PERC EIWIT_PERC
## 1 2011-01-28 3 10 235 NA 3.33 4.10
## 2 2011-02-28 3 10 266 36.6 3.26 4.24
## 3 2011-03-31 3 10 297 32.4 3.32 3.17
## 4 2011-04-27 3 10 324 24.6 3.38 2.45
## 5 2011-05-30 3 10 357 29.0 3.25 3.64
## 6 2011-06-27 3 10 385 25.6 3.50 4.07
summary(df)
## DATUM ID NLACT DIL PROD_KG
## 2012-03-29: 702 Min. : 3 Min. : 1.00 Min. : 5 Min. : 4.6
## 2012-02-28: 689 1st Qu.: 766 1st Qu.: 1.00 1st Qu.: 84 1st Qu.:28.8
## 2012-04-28: 687 Median :1034 Median : 2.00 Median :164 Median :34.8
## 2011-04-27: 656 Mean : 981 Mean : 2.38 Mean :178 Mean :35.5
## 2012-01-30: 655 3rd Qu.:1245 3rd Qu.: 3.00 3rd Qu.:254 3rd Qu.:41.8
## 2011-03-31: 647 Max. :1607 Max. :11.00 Max. :890 Max. :78.8
## (Other) :6238 NA's :103
## VET_PERC EIWIT_PERC
## Min. :1.98 Min. :1.05
## 1st Qu.:2.97 1st Qu.:3.32
## Median :3.16 Median :3.68
## Mean :3.20 Mean :3.75
## 3rd Qu.:3.40 3rd Qu.:4.09
## Max. :7.10 Max. :9.95
## NA's :14 NA's :14
In R heet een tabel een data.frame:
class(df)
## [1] "data.frame"
En een data.frame heeft rijen en kolommen:
nrow(df)
## [1] 10274
ncol(df)
## [1] 7
De kolommen van een data.frame hebben namen:
colnames(df)
## [1] "DATUM" "ID" "NLACT" "DIL" "PROD_KG" "VET_PERC"
## [7] "EIWIT_PERC"
data.frameWe kunnen individuele gegevens in een data.frame bereiken door R te vertellen welke rij en welke kolom we willen benaderen. Er zijn meerdere mogelijkheden:
df[1, 5]
## [1] NA
df$PROD_KG[1]
## [1] NA
df[1, "PROD_KG"]
## [1] NA
We kunnen ook meerdere gegevens tegelijk benaderen:
df[1, ]
## DATUM ID NLACT DIL PROD_KG VET_PERC EIWIT_PERC
## 1 2011-01-28 3 10 235 NA 3.33 4.1
df[1:4, ]
## DATUM ID NLACT DIL PROD_KG VET_PERC EIWIT_PERC
## 1 2011-01-28 3 10 235 NA 3.33 4.10
## 2 2011-02-28 3 10 266 36.6 3.26 4.24
## 3 2011-03-31 3 10 297 32.4 3.32 3.17
## 4 2011-04-27 3 10 324 24.6 3.38 2.45
df[1:4, 5]
## [1] NA 36.6 32.4 24.6
df$PROD_KG[1:5]
## [1] NA 36.6 32.4 24.6 29.0
data.frameStel dat we nu de hoeveelheid meetmelk willen berekenen voor elke koe op elke melkcontrole:
\(\text{FPCM} = (0.337 + 0.116\cdot \text{VET PERC} + 0.06\cdot \text{EIWIT PERC})\cdot \text{PROD KG}\)
FPCM <- (0.337 + 0.116 * df$VET_PERC + 0.06 * df$EIWIT_PERC) * df$PROD_KG
en dat we FPCM willen toevoegen aan ons data.frame:
df$FPCM <- FPCM
We kunnen het ook in een keer doen:
df$FPCM <- (0.337 + 0.116 * df$VET_PERC + 0.06 * df$EIWIT_PERC) * df$PROD_KG
Stel dat we nu de gemiddelde meetmelkproductie van 1e-kalfs koeien willen berekenen. Hiervoor gebruiken we functie mean, type ?mean in R in om de documentatie van deze functie te zien.
We moeten de productie van 1e-kalfs koeien hebben, dit zijn dieren waar df$NLACT gelijk is aan 1. Vervolgens moeten we de gemiddelde productie van deze dieren berekenen:
pr1 <- df$FPCM[df$NLACT == 1]
mean(pr1)
## [1] NA
Omdat de productie van sommige dieren niet bekend is, in R wordt dit met NA weergegeven moeten we in functie mean aangeven dat hij de onbekende gegevens niet mee moet nemen in de berekening (na.rm = TRUE), omdat het gemiddelde van onbekende getallen onbekend is:
mean(pr1, na.rm = T)
## [1] 29.5
We kunnen het ook in 1 stap berekenen:
mean(df$FPCM[df$NLACT == 1], na.rm = TRUE)
## [1] 29.5
Punt is nu dat productie per melkcontrole wordt gemeten, gemiddelde productie van vaarzen zegt dus niet zoveel, interessanter is het om de gemiddelde productie van vaarzen per melkcontrole te weten. Eerst moeten we weten hoeveel melkcontroles er zijn geweest:
unique(df$DATUM)
## [1] 2011-01-28 2011-02-28 2011-03-31 2011-04-27 2011-05-30 2011-06-27 2011-07-29
## [8] 2011-08-29 2011-09-29 2012-01-30 2012-02-28 2012-03-29 2012-04-28 2011-10-31
## [15] 2011-11-29 2011-12-28
## 16 Levels: 2011-01-28 2011-02-28 2011-03-31 2011-04-27 2011-05-30 ... 2012-04-28
en nu kunnen we de gemiddelde productie per melkcontrole berekenen. We zetten de verschillende datums eerst in een vector van datums die we dd noemen en bekijken de datums:
dd <- unique(df$DATUM)
dd
## [1] 2011-01-28 2011-02-28 2011-03-31 2011-04-27 2011-05-30 2011-06-27 2011-07-29
## [8] 2011-08-29 2011-09-29 2012-01-30 2012-02-28 2012-03-29 2012-04-28 2011-10-31
## [15] 2011-11-29 2011-12-28
## 16 Levels: 2011-01-28 2011-02-28 2011-03-31 2011-04-27 2011-05-30 ... 2012-04-28
vervolgens pakken bijvoorbeeld de eerste datum en gebruiken die om het gemiddelde te berekenen:
pr2 <- df$FPCM[df$DATUM == dd[1]]
mean(pr2, na.rm = TRUE)
## [1] 33
opnieuw kan het ook in een stap:
mean(df$FPCM[df$DATUM == dd[1]], na.rm = TRUE)
## [1] 33
We hebben nu een gemiddelde productie op de eerste melkcontrole, alleen willen we eigenlijk de gemiddelde productie van vaarzen op de eerste melkcontrole. We moeten R dus vertellen dat we FPCM van vaarzen op de eerste datum willen hebben:
pr3 <- df$FPCM[df$DATUM == dd[1] & df$NLACT == 1]
mean(pr3, na.rm = TRUE)
## [1] 28.9
of in een stap:
mean(df$FPCM[df$DATUM == dd[1] & df$NLACT == 1], na.rm = TRUE)
## [1] 28.9
tapplyHiervoor moesten we de datum en het laktatienummer handmatig invoeren, beter is het om een stukje code te schrijven dat als het ware over de laktatienummers loopt. Hiervoor gebruiken we functie tapply. Functie tapply past een bepaalde functie toe, op subsets van onze dataset, zie ?tapply.
We moeten functie tapply vertellen welke kolom we willen samenvatten, df$FPCM, op basis van welke kolom we de subsets willen maken, df$NLACT, en we willlen het gemiddelde berekenen met functie mean. Bedenk dat we moeten aangeven dat de NA’s niet moeten worden meegenomen, na.rm = TRUE:
tapply(df$FPCM, df$NLACT, mean, na.rm = TRUE)
## 1 2 3 4 5 6 7 8 9 10 11
## 29.5 34.5 35.5 34.9 33.1 32.6 32.9 31.5 30.8 27.1 38.7
we kunnen de gemiddeldes ook in een reeks zetten die we bijvoorbeeld gms noemen:
gms <- tapply(df$FPCM, df$NLACT, mean, na.rm = TRUE)
tapply op twee kolommenStel nu dat we de gemiddelde productie per laktatienummer en datum van melkcontrole willen berekenen, we moeten daarvoor in functie tapply vertellen dat we gegevens op basis van kolommen df$NLACt en df$DATUM willen samenvatten. We zetten het resultaat in tabel t1 en laten alleen de eerste 3 kolommen zien en de laatste kolom:
t1 <- tapply(df$FPCM, list(df$DATUM, df$NLACT), mean, na.rm = TRUE)
t1[, c(1:3, ncol(t1))]
## 1 2 3 11
## 2011-01-28 28.9 34.6 37.1 NA
## 2011-02-28 28.5 34.3 34.5 NA
## 2011-03-31 28.9 35.0 34.4 NA
## 2011-04-27 28.4 33.2 34.3 NA
## 2011-05-30 29.7 33.6 34.6 NA
## 2011-06-27 27.2 31.0 32.4 NA
## 2011-07-29 26.7 30.5 31.4 NA
## 2011-08-29 26.4 28.6 29.0 NA
## 2011-09-29 28.4 31.9 32.0 37.2
## 2011-10-31 28.6 32.9 34.9 32.1
## 2011-11-29 30.7 37.1 37.6 21.4
## 2011-12-28 31.7 37.8 40.5 NA
## 2012-01-30 31.3 37.1 39.1 39.3
## 2012-02-28 30.5 36.9 38.0 44.4
## 2012-03-29 31.5 37.1 37.4 50.2
## 2012-04-28 32.8 39.8 38.8 46.6
We hebben nu een tabel met gemiddelde producties, maar het kan ook erg nuttig zijn om het gemiddelde laktatiestadium van deze dieren te weten, daarvoor moeten we aangeven dat we tapply willen toepassen op kolom df$DIL. We laten opnieuw alleen de eerste 3 kolommen en de laatste kolom zien:
t2 <- tapply(df$DIL, list(df$DATUM, df$NLACT), mean, na.rm = TRUE)
t2[, c(1:3, ncol(t2))]
## 1 2 3 11
## 2011-01-28 190 175 147 NA
## 2011-02-28 203 170 156 NA
## 2011-03-31 193 174 165 NA
## 2011-04-27 196 191 180 NA
## 2011-05-30 208 200 193 NA
## 2011-06-27 212 204 180 NA
## 2011-07-29 218 205 183 NA
## 2011-08-29 190 198 169 NA
## 2011-09-29 194 178 167 30
## 2011-10-31 185 166 157 62
## 2011-11-29 175 167 155 91
## 2011-12-28 170 160 144 NA
## 2012-01-30 164 168 151 13
## 2012-02-28 166 173 159 42
## 2012-03-29 174 174 174 72
## 2012-04-28 187 184 196 102
en verder is het ook erg nuttig om te weten hoeveel dieren er zijn. Hiervoor gebruik ik altijd functie length, die aangeeft hoeveel elementen er in een lijst of vector zitten:
pr <- df$FPCM
length(pr)
## [1] 10274
nu gebruiken we in plaats van functie mean gewoon functie length, en laten het na.rm = TRUE weg:
t3 <- tapply(df$FPCM, list(df$DATUM, df$NLACT), length)
t3[, c(1:3, ncol(t3))]
## 1 2 3 11
## 2011-01-28 209 165 107 NA
## 2011-02-28 210 173 112 NA
## 2011-03-31 231 176 112 NA
## 2011-04-27 233 178 112 NA
## 2011-05-30 230 171 110 NA
## 2011-06-27 230 172 105 NA
## 2011-07-29 218 168 104 NA
## 2011-08-29 221 163 113 NA
## 2011-09-29 214 158 120 1
## 2011-10-31 228 168 112 1
## 2011-11-29 223 167 121 1
## 2011-12-28 235 166 118 NA
## 2012-01-30 236 172 121 1
## 2012-02-28 253 178 129 1
## 2012-03-29 259 182 131 1
## 2012-04-28 258 177 128 1
Tot nu bevatte de tabel gegevens van 1 type (FPCM, DIL, of aantal). Het is handiger en slimmer om bijvoorbeeld FPCM en aantal te combineren. Hiervoor schrijven we een eigen functie meanN omdat er geen standaard functie bestaat voor dit doel:
meanN <- function(x) paste(round(mean(x, na.rm = TRUE), 2), " (", length(x[!is.na(x)]), ")",
sep = "")
t4 <- tapply(df$FPCM, list(df$DATUM, df$NLACT), meanN)
t4[, 1:3]
## 1 2 3
## 2011-01-28 "28.87 (208)" "34.64 (162)" "37.08 (106)"
## 2011-02-28 "28.54 (206)" "34.33 (170)" "34.47 (111)"
## 2011-03-31 "28.87 (229)" "35.05 (173)" "34.42 (110)"
## 2011-04-27 "28.44 (230)" "33.19 (178)" "34.32 (112)"
## 2011-05-30 "29.73 (230)" "33.61 (169)" "34.62 (108)"
## 2011-06-27 "27.21 (215)" "30.97 (167)" "32.45 (104)"
## 2011-07-29 "26.71 (218)" "30.54 (166)" "31.44 (103)"
## 2011-08-29 "26.36 (219)" "28.63 (161)" "29.03 (113)"
## 2011-09-29 "28.42 (214)" "31.9 (156)" "32.05 (119)"
## 2011-10-31 "28.57 (224)" "32.9 (166)" "34.88 (112)"
## 2011-11-29 "30.75 (222)" "37.14 (165)" "37.58 (120)"
## 2011-12-28 "31.71 (230)" "37.79 (166)" "40.55 (118)"
## 2012-01-30 "31.34 (234)" "37.14 (172)" "39.14 (121)"
## 2012-02-28 "30.48 (251)" "36.85 (178)" "38.04 (129)"
## 2012-03-29 "31.54 (257)" "37.14 (180)" "37.43 (130)"
## 2012-04-28 "32.79 (255)" "39.76 (174)" "38.79 (124)"
Aantal dieren boven de 3 laktaties loopt snel terug en eigenlijk kunnen deze dieren best met elkaar samen worden gevoegd. Daarom maken we een nieuwe kolomn, df$NLACTcat die dieren van 3 en meer laktaties samenvoegt. We gebruiken hiervoor de functie cut, van het werkwoord knippen.
df$NLACTcat <- cut(df$NLACT, breaks = c(0, 1, 2, 20))
t5 <- tapply(df$FPCM, list(df$DATUM, df$NLACTcat), meanN)
t5
## (0,1] (1,2] (2,20]
## 2011-01-28 "28.87 (208)" "34.64 (162)" "35.47 (240)"
## 2011-02-28 "28.54 (206)" "34.33 (170)" "34.37 (243)"
## 2011-03-31 "28.87 (229)" "35.05 (173)" "33.75 (238)"
## 2011-04-27 "28.44 (230)" "33.19 (178)" "32.68 (243)"
## 2011-05-30 "29.73 (230)" "33.61 (169)" "33.17 (227)"
## 2011-06-27 "27.21 (215)" "30.97 (167)" "31.03 (218)"
## 2011-07-29 "26.71 (218)" "30.54 (166)" "29.98 (219)"
## 2011-08-29 "26.36 (219)" "28.63 (161)" "28.41 (227)"
## 2011-09-29 "28.42 (214)" "31.9 (156)" "32.09 (243)"
## 2011-10-31 "28.57 (224)" "32.9 (166)" "33.79 (232)"
## 2011-11-29 "30.75 (222)" "37.14 (165)" "36.32 (241)"
## 2011-12-28 "31.71 (230)" "37.79 (166)" "38.99 (234)"
## 2012-01-30 "31.34 (234)" "37.14 (172)" "38.72 (245)"
## 2012-02-28 "30.48 (251)" "36.85 (178)" "37.91 (257)"
## 2012-03-29 "31.54 (257)" "37.14 (180)" "37.7 (260)"
## 2012-04-28 "32.79 (255)" "39.76 (174)" "38.4 (245)"
Het aantal dagen in laktatie hebben we in tabel t2 weergegeven. Mooier is het om dit in dezelfde tabel weer te geven, zoals gedaan is in de eerste slide. Daarom gaan we kolom df$DIL ook opknippen in logische catagorieen: (0-30 DIL), (31-60 DIL), (61-200 DIL), (201 + DIL), opnieuw met functie cut:
df$DILcat <- cut(df$DIL, breaks = c(0, 30, 60, 200, 1000))
t6 <- tapply(df$FPCM, list(df$DATUM, df$DILcat), meanN)
t6[, 1:3]
## (0,30] (30,60] (60,200]
## 2011-01-28 "35.15 (52)" "37.16 (68)" "34.76 (292)"
## 2011-02-28 "37.71 (51)" "36.36 (53)" "33.51 (305)"
## 2011-03-31 "33.73 (52)" "37.53 (55)" "34.39 (295)"
## 2011-04-27 "34.2 (28)" "34.08 (59)" "34.27 (300)"
## 2011-05-30 "32.35 (26)" "36.75 (29)" "35.51 (276)"
## 2011-06-27 "29.81 (42)" "33.41 (29)" "32.74 (223)"
## 2011-07-29 "29.86 (41)" "33.83 (51)" "31.55 (200)"
## 2011-08-29 "28.43 (79)" "30.92 (53)" "30.44 (197)"
## 2011-09-29 "34.22 (61)" "33.13 (90)" "33.81 (189)"
## 2011-10-31 "32.23 (75)" "37.24 (62)" "34.05 (238)"
## 2011-11-29 "34.41 (67)" "37.38 (82)" "37.24 (268)"
## 2011-12-28 "35.4 (65)" "40.94 (70)" "38.08 (307)"
## 2012-01-30 "36.27 (63)" "39.4 (69)" "37.43 (318)"
## 2012-02-28 "35.69 (61)" "38.42 (71)" "37.07 (330)"
## 2012-03-29 "36.53 (49)" "39.22 (65)" "37.47 (324)"
## 2012-04-28 "36.37 (21)" "40.72 (55)" "38.76 (315)"
Als laatste zou het mooi zijn om een samenvatting te maken van datum, laktatiestadium en laktatienummer, bedenk dat we daarmee een drie-dimensionale tabel krijgen die moeilijk te interpreteren is. Met functie dim geef ik de grootte van elke dimensie weer:
t7 <- tapply(df$FPCM, list(df$DATUM, df$DILcat, df$NLACTcat), meanN)
dim(t7)
## [1] 16 4 3
Daarom moeten we tabel t7 eerst omzetten naar een lang formaat. We doen dit met functie melt uit het pakket reshape. Daarvoor moeten we dit pakket eerst installeren met functie install.packages en vervolgens laden met functie require:
install.packages("reshape")
require(reshape)
t7L <- melt(t7)
head(t7L)
## X1 X2 X3 value
## 1 2011-01-28 (0,30] (0,1] 27.52 (20)
## 2 2011-02-28 (0,30] (0,1] 28.93 (10)
## 3 2011-03-31 (0,30] (0,1] 27.92 (28)
## 4 2011-04-27 (0,30] (0,1] 28.47 (13)
## 5 2011-05-30 (0,30] (0,1] 22.98 (9)
## 6 2011-06-27 (0,30] (0,1] 25.27 (15)
En vervolgens moeten we tabel t7L weer omzetten naar een leesbaardere tabel, t7B met functie cast uit pakket reshape:
t7B <- cast(t7L, X3 + X2 ~ X1)
t7B[, 1:5]
## X3 X2 2011-01-28 2011-02-28 2011-03-31
## 1 (0,1] (0,30] 27.52 (20) 28.93 (10) 27.92 (28)
## 2 (0,1] (200,1e+03] 29.25 (86) 27.94 (83) 28.46 (85)
## 3 (0,1] (30,60] 29.06 (21) 29.72 (20) 27.72 (14)
## 4 (0,1] (60,200] 28.75 (81) 28.77 (93) 29.62 (102)
## 5 (1,2] (0,30] 41.05 (11) 38.5 (21) 42.29 (12)
## 6 (1,2] (200,1e+03] 28.15 (58) 29.56 (59) 29.96 (67)
## 7 (1,2] (30,60] 42.32 (18) 40.54 (11) 39.54 (23)
## 8 (1,2] (60,200] 36.86 (75) 35.92 (79) 37.16 (71)
## 9 (2,20] (0,30] 39.33 (21) 41.27 (20) 38.73 (12)
## 10 (2,20] (200,1e+03] 27.3 (54) 28.45 (68) 26.9 (86)
## 11 (2,20] (30,60] 39.83 (29) 40.31 (22) 42.6 (18)
## 12 (2,20] (60,200] 37.19 (136) 35.38 (133) 36.78 (122)
t7BTabel t7B heeft nog een paar verbeterpuntjes:
cast alfabetisch en numeriek ordent, terwijl wij een andere volgorde in ons hoofd hebben. We gaan de volgorde van de factoren daarom logischer maken:df$DILcat <- cut(df$DIL, breaks = c(0, 30, 60, 200, 1000), labels = c(1, 2, 3, 4))
t7a <- tapply(df$FPCM, list(df$DATUM, df$DILcat, df$NLACTcat), meanN)
t7aL <- melt(t7a)
t7aB <- cast(t7aL, X3 + X2 ~ X1)
t7aB[, 1:5]
## X3 X2 2011-01-28 2011-02-28 2011-03-31
## 1 (0,1] 1 27.52 (20) 28.93 (10) 27.92 (28)
## 2 (0,1] 2 29.06 (21) 29.72 (20) 27.72 (14)
## 3 (0,1] 3 28.75 (81) 28.77 (93) 29.62 (102)
## 4 (0,1] 4 29.25 (86) 27.94 (83) 28.46 (85)
## 5 (1,2] 1 41.05 (11) 38.5 (21) 42.29 (12)
## 6 (1,2] 2 42.32 (18) 40.54 (11) 39.54 (23)
## 7 (1,2] 3 36.86 (75) 35.92 (79) 37.16 (71)
## 8 (1,2] 4 28.15 (58) 29.56 (59) 29.96 (67)
## 9 (2,20] 1 39.33 (21) 41.27 (20) 38.73 (12)
## 10 (2,20] 2 39.83 (29) 40.31 (22) 42.6 (18)
## 11 (2,20] 3 37.19 (136) 35.38 (133) 36.78 (122)
## 12 (2,20] 4 27.3 (54) 28.45 (68) 26.9 (86)
t7aB$X3 <- factor(t7aB$X3)
levels(t7aB$X3)
## [1] "(0,1]" "(1,2]" "(2,20]"
levels(t7aB$X3) <- c("1 laktatie", "2 laktaties", "3 + laktaties")
t7aB$X2 <- factor(t7aB$X2)
levels(t7aB$X2)
## [1] "1" "2" "3" "4"
levels(t7aB$X2) <- c("0-30 DIL", "31-61 DIL", "61-200 DIL", "200+ DIL")
t7aB[, 1:4]
## X3 X2 2011-01-28 2011-02-28
## 1 1 laktatie 0-30 DIL 27.52 (20) 28.93 (10)
## 2 1 laktatie 31-61 DIL 29.06 (21) 29.72 (20)
## 3 1 laktatie 61-200 DIL 28.75 (81) 28.77 (93)
## 4 1 laktatie 200+ DIL 29.25 (86) 27.94 (83)
## 5 2 laktaties 0-30 DIL 41.05 (11) 38.5 (21)
## 6 2 laktaties 31-61 DIL 42.32 (18) 40.54 (11)
## 7 2 laktaties 61-200 DIL 36.86 (75) 35.92 (79)
## 8 2 laktaties 200+ DIL 28.15 (58) 29.56 (59)
## 9 3 + laktaties 0-30 DIL 39.33 (21) 41.27 (20)
## 10 3 + laktaties 31-61 DIL 39.83 (29) 40.31 (22)
## 11 3 + laktaties 61-200 DIL 37.19 (136) 35.38 (133)
## 12 3 + laktaties 200+ DIL 27.3 (54) 28.45 (68)
In dit onderdeel van de workshop hebben we het volgende behandeld:
data.frame) in Rdata.framedata.frame samenvatten