Nyrkkisääntöjä tallennusvaiheeseen AivoDietissä

  • Ruokakoodien tulee aina olla uniikkeja. Tulosten laskennassa R-ohjelmalla käytetään vain ruokakoodeja, ei ruokalajien nimiä. Toisin sanoen, jos sama ruokakoodi edustaisi kahta erilaista ruokaa, tuloksiin tulisi virhe. Jos vähänkin muokkaat reseptiä, anna uudelle ruokalajille aina uusi nimi ja uusi koodi. Ole tarkkana, koska AivoDiet ei hälytä virheestä.
  • Ruokakoodeissa ei saa olla sanavälejä. Koodi saa sisältää sekä kirjaimia että numeroita, mutta sanavälit koodissa aiheuttavat päänvaivaa myöhemmin, kun dataa muokataan R:ssa.
  • Jos ruokalajilla ei ole reseptirivejä AivoDietissä, sen raaka-aineet eivät jakaudu omille riveilleen laskennassa. Jokaiselle ruokalajille on siis luotava oma resepti. Tämä koskee hankkeita, joissa halutaan käyttää raaka-ainetason laskentaa.
  • Älä käytä ruokakoodeja, joiden nimessä lukee ”punnittu kuorineen/kivineen”. Näistä saisit kyllä oikein lasketut ravintoaineet, mutta useimmissa hankkeissa halutaan tutkia myös ruokien grammamääräistä painoa, eikä ohjelma vähennä kuorien tai kivien osuutta painosta. Pyri siis tallentamaan kaikista ruoista syöty osuus. Jos tutkittava on ilmoittanut esimerkiksi banaanin painon kuorineen tai luumun painon kivineen, käytä Ruokamittoja-julkaisun tai muun vastaavan taulukon tietoja laskeaksesi syötävän osan painon. Koodeja ”Omena, kotimainen, keskiarvo, kuorineen” ja ”Omena, ulkomainen, keskiarvo, kuorineen” voi käyttää. Näissä koodin nimi viittaa siihen, että kuoren sisältämät ravintoaineet ovat mukana ravintoarvoissa.
  • Tallenna samaan ryhmään korkeintaan noin 50 tutkittavan tiedot. Raaka-ainetason laskenta on hyvin hidas ja ohjelma voi lakata toimimasta kun laskentaa tehdään ryhmälle, jossa on paljon tietoja (esim. yli 100 hengen kolmen päivän ruokapäiväkirjat). Tutkittavien siirtäminen ryhmästä toiseen on mahdollista jälkikäteen, mutta se on hidasta ja vaivalloista.

Viimeksi päivitetty 26.6.2017

Tulokset elintarvikeluokittain: 1. alkuvalmistelut

AivoDiet-ohjelman ruokalajitason outputissa on oma rivi jokaisen tutkittavan jokaista ruokakoodia varten. Analyyseja varten aineisto pitää muuntaa sellaiseen muotoon, jossa jokaisella tutkittavalla on vain yksi rivi ja jokaisella ruokakoodilla on oma sarake. Sen jälkeen voi laskea esimerkiksi eri elintarvikeluokkien käyttömäärien keskiarvoja tai tarkastella, mitkä elintarvikeluokat ovat jonkin ravintoaineen tärkeimmät läheet.

Aineiston, jossa jokaisella tutkittavalla on vain yksi rivi, voi muodostaa pivotoimalla. Jos kyseessä on pieni aineisto, voit tehdä tämän vaiheen Excelin Pivot-toiminolla. Jos sinulla on suuri aineisto, Excel ei suoriudu tästä toiminnosta ja pivotointi kannattaa tehdä R-ohjelmalla (tai vastaavalla).

Alkuvalmistelut

Aluksi luetaan ruokalajitason aineisto sisään:

#luetaan data sisään
rldata = read.csv("Z:/MyDocuments/blogi/ruokalaji/blogi_ruokalajitaso_161209.csv", sep=";", header = T)

#tarkistetaan, että kaikki näyttää hyvältä
head(rldata, n=10)

#vaihdetaan IvName-muuttujan nimeksi id.
names(rldata)[names(rldata)=="IvName"] <- "ID_child"

Korvataan puuttuvat arvot nollilla energian ja ravintoaineiden saannin muuttujissa.

#Aivodietin outputissa ensimmäinen saantimuuttuja on vasemmalta lukien järjestysnumeroltaan 22. 

#Tässä esimerkkidatassa korvataan puuttuvat arvot nollilla muuttujissa 22-79.
rldata[,22:79][is.na(rldata[,22:79])] <- 0

head(rldata, n=10)

Ennen pivotointia aineiston kaikki ruokakoodit muutetaan kirjaimella alkaviksi. Pivotoinnissa ruokakoodien nimistä tulee muuttujien nimiä. R-ohjelma ei kuitenkaan hyväksy numerolla alkavia muuttujien nimiä.

#lisätään d-kirjan ruokakoodien eteen
rldata$Code <- paste("d", rldata$Code, sep="")

Viimeksi päivitetty 16.3.2017

Tulokset elintarvikeluokittain: 2. pivotointi R-ohjelmalla

Pivot-toiminolla luodaan aineisto, jossa tutkittavaa varten on vain yksi rivi, ja sarakkeina on ruokakoodit. Näitä tiedostoja luodaan useita: yksi grammamäärille, yksi energialle ja yksi jokaiselle kiinnostuksen kohteena olevalle ravintoaineelle. Alla on esimerkit grammamäärille ja energialle.

Elintarvikeluokkien käyttömäärä grammoina

Tee alkuvalmistelut. Poimi aineistosta muuttujat ID_child, CoWeight (ruoan paino grammoina) ja Code:

myvars <- c("ID_child", "CoWeight", "Code")
CoWeightdata <- rldata[myvars]

head(CoWeightdata, n=2)

Tee pivotointi:

#otetaan käyttöön reshape-kirjasto.
library(reshape)

#tehdään pivot muuttujalle CoWeight.
mCoWeightrldata<- melt(CoWeightdata, id=c("Code", "ID_child"))

rldataCoWeightsum <- cast(mCoWeightrldata, ID_child ~ Code + variable, sum, margins=c("grand_col"))

#muutetaan (all)_(all) nimisen muuttujan nimeksi all_CoWeight.
names(rldataCoWeightsum)[names(rldataCoWeightsum)=="(all)_(all)"] <- "all_CoWeight"

names(rldataCoWeightsum)

#tehdään tiedostosta .txt-muotoinen.
write.table(rldataCoWeightsum, "Z:/MyDocuments/blogi/ruokalaji/rldataCoWeightsum.txt", sep="\t", col.names=NA)

Energia

Energia (tai mikä tahansa ravintoaine) käsitellään samalla tavoin kuin muuttuja CoWeight. Poimi aineistosta muuttujat ID_child, ENERJ ja Code.

myvars <- c("ID_child", "ENERJ", "Code")
ENERJdata <- rldata[myvars]

head(ENERJdata, n=2)

Tee pivotointi:


#tehdään pivot muuttujalle ENERJ.
mENERJrldata<- melt(ENERJdata, id=c("Code", "ID_child"))

rldataENERJsum  <- cast(mENERJrldata, ID_child ~ Code + variable, sum, margins=c("grand_col"))

#muutetaan (all)_(all) nimisen muuttujan nimeksi all_ENERJ.
names(rldataENERJsum)[names(rldataENERJsum)=="(all)_(all)"] <- "all_ENERJ"

names(rldataENERJsum)

#tehdään tiedostosta .txt-muotoinen.
write.table(rldataENERJsum, "Z:/MyDocuments/blogi/ruokalaji/rldataENERJsum.txt", sep="\t", col.names=NA)

Voit avata uudet .txt-muotoiset tiedostot Excelissä ja tarkistaa, että kaikki on kunnossa.

Viimeksi päivitetty 27.3.2017