Syödyt ateriat

Mitä aterioita kukin tutkittava söi?

Seuraavassa esimerkissä tavoitteeni on luoda uudet muuttujat, joista käy ilmi mitä aterioita ja missä paikoissa kukin tukittava söi kunakin tallennettuna päivänä.

Käytän tähän ruokalajitason dataa ja poimin sieltä kolme muuttujaa: tutkittavan id-numero, tallennetun päivän järjestysnumero ja yllä kuvattu ateria/paikka-koodi.

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

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

################

#poimitaan tarvittavat muuttujat.
myvars <- c("ID_child", "DaDay", "MaName")
MaNamedata <- rldata[myvars]

#tehdään taulukko, jossa kullekin tutkittavalle on vain yksi rivi.
#sarakkeet muodostetaan ensin päivän numeron mukaan ja sen jälkeen ateria/paikka-koodin mukaan.
ftable(MaNamedata, row.vars = c("ID_child"), col.vars = c("DaDay", "MaName"))

Tästä taulukosta voi siis lukea, että ylimmän rivin lapsi söi päivänä 1 aamupalan kotona ja kyseiseen aamupalaan tallennettiin kaksi ruokakoodia. Toisella rivillä oleva lapsi söi päivänä 1 aamiaisen päiväkodissa. Päivänä 2 hän söi kaksi aamiasta, yhden kotona ja toisen päiväkodissa.

ftable3

Seuraavaksi yllä tehty taulukko pitää vielä muuttaa data frame-muotoon. Alla oleva koodi tekee sen, mutta samalla menetetään muuttujien nimet ja ne pitää laittaa paikoilleen jälkikäteen. (Otan mielelläni vastaan vinkkejä, miten tämän vaiheen voisi toteuttaa suoraviivaisemmin.)

#muutetaan taulukko data frame-muotoon, jolloin siinä on vain yksi rivi muuttujien nimille.
ftMaName<-ftable(MaNamedata, row.vars = c("ID_child"), col.vars = c("DaDay", "MaName"))
ateriat<-data.frame(expand.grid(rev(attr(ftMaName, "row.vars"))), unclass(ftMaName))

head(ateriat)


#nimetään ateria/paikka-muuttujat uudelleen.
colnames(ateriat)[2] <- "A_k_1"
colnames(ateriat)[3] <- "A_m_1"
colnames(ateriat)[4] <- "A_pk_1"
...ja niin edelleen...
colnames(ateriat)[86] <- "V_k_4"
colnames(ateriat)[87] <- "V_m_4"
colnames(ateriat)[88] <- "V_pk_4"
colnames(ateriat)[89] <- "V_r_4"
head(ateriat)

#tarkistaan, että muuttujien nimet ovat nyt paikoillaan.
head(ateriat)

Viimeksi muokattu 25.3.2019

Raaka-aineen vaihtotoiminto

Käytännön kokemuksemme DAGIS-hankkeen aineiston tallennus- ja tarkistustyössä AivoDiet-ohjelmalla ovat osoittaneet, että helpointa on joko olla kokonaan käyttämättä raaka-aineen vaihtomahdollisuutta tai käyttää tätä mahdollisuutta kussakin reseptissä korkeintaan yhdellä raaka-ainerivillä. Jos päätät käyttää korkeintaan yhtä vaihtoa kussakin reseptissä, vaihtojen osalta riittää, että muistat alla olevat kolme sääntöä (ja lisäksi kirjoituksen lopussa olevan vinkin)*.

  • Kun luot reseptin, päätä mille riville annat vaihtomahdollisuuden. Kun olet valinnut rivin, älä muuta enää mieltäsi. Vaihtomahdollisuuden poistaminen tai lisääminen jälkikäteen voi sekoittaa aiempien ruokapäiväkirjojen tulokset.
  • Riville, jolla on reseptillinen tuote, ei saa lisätä vaihtomahdollisuutta.

  • Vaihtotuote ei koskaan saa olla reseptillinen (eikä vaihtolistalle siis tule lisätä reseptillisiä ruokakoodeja), sillä ohjelma ei osaa hajottaa vaihtotuotetta raaka-aineisiin. Esimerkiksi reseptin ainesosana olevaa tomaattimurskaa ei saa vaihtotoiminnolla vaihtaa tomaattikastikkeeseen, joka koostuu useista eri raaka-aineista.

AivoDiet-ohjelmassa on sallittua käyttää kussakin reseptissä raaka-aineen vaihtomahdollisuutta kahdella rivillä. Jos päätät käyttää kahta vaihtoa reseptissä, lue alla olevat ohjeet huolellisesti. Jos näitä ohjeita ei noudata, on todennäköistä, että ravintoaineiden saantituloksiin ja raaka-aineiden käyttömäärätuloksiin tulee virheitä. Lue myös kirjoituksen lopussa oleva vinkki*.

  • Raaka-aineen vaihtomahdollisuuden voi laittaa korkeintaan kahdelle reseptin riville. Ohjelma ei anna mitään varoitusta, vaikka laittaisit kolmannelle riville vaihtomahdollisuuden. Tämä voi kuitenkin sekoittaa laskennan.
  • Molemmat vaihtomahdollisuudet kannattaa laittaa silloin, kun resepti luodaan ensimmäisen kerran. Niitä ei tule myöhemmin poistaa tai niiden paikkaa vaihtaa.
  • Jos reseptiin ei ole aiemmin laitettu vaihtomahdollisuuksia, siihen voi lisätä yhden tai kaksi vaihtomahdollisuutta. Mikäli lisäät kaksi, molemmat tulee lisätä samaan aikaan.
  • Jos tiettyä reseptiä, jossa on yksi vaihtomahdollisuus, on jo käytetty tallennuksessa, uuden vaihtomahdollisuuden lisääminen myöhemmin tähän reseptiin voi sotkea vaihdot tämän reseptin osalta aiemmissa tallennuksissa. Tällöin ravintoaineiden saantituloksiin ja raaka-aineiden käyttömäärätuloksiin voi tulla virheitä.
  • Samassa reseptissä ei saa olla kahta saman ryhmän vaihtomahdollisuutta. Esimerkiksi salaattireseptiin ei saa laittaa kahdelle eri riville vaihtomahdollisuutta ryhmälle ”kasvikset”.
  • Riville, jolla on reseptillinen tuote, ei saa lisätä vaihtomahdollisuutta.

  • Vaihtotuote ei koskaan saa olla reseptillinen (eikä vaihtolistalle siis tule lisätä reseptillisiä ruokakoodeja), sillä ohjelma ei osaa hajottaa vaihtotuotetta raaka-aineisiin. Esimerkiksi reseptin ainesosana olevaa tomaattimurskaa ei saa vaihtotoiminnolla vaihtaa tomaattikastikkeeseen, joka koostuu useista eri raaka-aineista.

*Lopuksi vinkki: Tutkimusryhmän sisällä on hyvä sopia säännöt, mitä tuotteita voi vaihtaa vaihtotoiminnolla ja mihin tuotteisiin. En suosittele esimerkiksi jauhelihakeitossa olevan naudan jauhelihan vaihtamista kirjoloheksi. Teknisesti tässä ei olisi varsinaista ongelmaa, ja ravintoaineiden saantikin tulisi lasketuksi oikein. Ongelma syntyisi siitä, että tällainen vaihto muuttaa jauhelihakeiton kalakeitoksi, mutta tuotteen nimi pysyy edelleen jauhelihakeittona. Tämä johtaisi väärin tuloksiin, kun aineistosta lasketaan elintarvikeluokkien grammamääräisiä käyttömääriä. Koodit luokitellaan elintarvikeluokkiin nimen perusteella ja tässä esimerkissä tutkittavan syömä kirjolohikeitto tulisi lasketuksi elintarvikeluokkaan ”lihakeitot”, eli väärään luokkaan.

Ruoka-aineen vaihtolistojen sisältöä voit muokata avaamalla ohjelman valikosta ”Taulukot” > ”Ruoka-ainevaihdot”. Avaa samanaikaisesti ”Taulukot” > ”Tuotteet”. Voit hiirellä vetämällä siirtää uuden tuotteen vaihtotaulukkoon.

Viimeksi päivitetty 3.11.2017

Jos VLOOKUP ei toimi

Joskus Excelin VLOOKUP ei toimi, vaikka olet kirjoittanut kaavan oikein. Tällaisessa tilanteessa kannattaa ensinnäkin tarkistaa että solut, joista etsitään ja solu, joka osoittaa mitä etsitään, on määritelty samoin (Format Cells > General).

Toiseksi kannattaa kokeilla seuraavaa: aktivoi sarake, valitse Data > Text to Columns. Valitse Delimited, klikkaa seuraava, valitse Tab, klikkaa seuraava ja Finish.

Jos VLOOKUP ei edelleenkään toimi, tarkista vielä kerran kaavasi ja etsi lisää vinkkejä googlaamalla.

Aterian nimi ja paikka

Tallennus

DAGIS-hankkeessa meitä kiinnostaa tehdä analyysejä, joissa eritellään päiväkodissa syöty ruoka ja muualla syöty ruoka. Haluamme myös, että aineistosta voidaan tarkastella eri ateriatyyppien merkitystä ruokavaliossa. AivoDiet-ohjeman tallennuksessa on käytettävissä kaksi ateriakohtaista vapaata kenttää, joihin tällaisia tietoja voi tallentaa:

– kenttä ”Tyyppi”, johon mahtuu kolme merkkiä
– kenttä ”Nimi”, johon mahtuu hieman pidempi teksti

(Huom. Kenttien ”% päivästä” ja ”Huomautus” tiedot eivät siirry output-tiedostoon, joten näihin kenttiin ei kannata tallentaa tietoja, joita tarvitaan myöhemmin datan analysoinnissa.)

DAGIS-hankkeessa päätimme tallennusvaiheessa merkitä tiedon sekä aterian tyypistä että paikasta kenttään ”Nimi”. Tätä varten sovimme seuraavat koodit:

Ateria
A aamupala
L lounas
P päivällinen
I iltapala
V välipala (myös napostelu)
M muu (esim. pelkkä juoma, ravintovalmisteet)

Paikka
k koti
pk päiväkoti (myös päiväkodin retket ja juhlat)
r ravintola (esim. pikaruokapaikat, kahvilat, huoltoasemat, lounasravintolat)
m muualla (esim. kylässä toisen kotona, eväät, piknik, auto, mökillä)

Näistä muodostetaan tarvittava yhdistelmä, esimerkiksi lounas kotona saa ateria/paikka-koodin L_k

Viimeksi muokattu 25.3.2019

Päivien lukumäärä

Tutkittavia pyydetään tavallisesti pitämään ruokapäiväkirjaa tietyn ajanjakson, esimerkiksi kolmen päivän ajan. On kuitenkin tavallista, että osa tutkittavista pitää sitä vain yhden tai kaksi päivää. Tutkittava on myös saattanut kirjata osan päivistä niin puutteellisesti, että ne päätetään jättää tallentamatta.

Kullekin tutkittavalle aineistosta löytyvien päivien lukumäärän voi poimia AivoDiet:n outputista erilliseksi muuttujaksi alla kuvatulla tavalla. Mikä tahansa päivämäärä, jolle on tallennettu edes yksi tuote, tulee tässä huomioiduksi. (Jos puutteellisesti kirjattuja päiviä on tallennettu AivoDiet-ohjelmaan ja ne halutaan poistaa, se pitää siis tehdä erikseen.)

#poimitaan muuttujat ID_child ja DaDate
myvars <- c("ID_child", "DaDate")
daydata <- rldata[myvars]

# lasketaan montako uniikkia päivämäärää kullakin henkilöllä on
numdays <-with(daydata, tapply(DaDate, ID_child, FUN = function(x) length(unique(x))))

# ja muutetaan edellisen tulos data-muotoon
rldatanumdays <- data.frame(ID_child=names(numdays),n_days=numdays)

head(rldatanumdays, n=10)

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

Elintarvike- ja raaka-aineluokat

Elintarvikeluokat

Ruoankäyttötutkimuksessa elintarvikkeet jaotellaan usein pää- ja alaluokkiin. Luokittelu on tutkijan päätettävissä, mutta suomalainen tutkija voi käyttää Finravinto-tutkimuksissa käytettyä luokittelua  hyvänä ohjenuorana. Finravinto 2007 ja 2012 –raporteissa on liitetaulukot, joissa luetellaan esimerkkejä elintarvikkeista, jotka kuuluvat kuhunkin elintarvikeluokkaan. Esimerkiksi pääluokkaan ”liharuoat” kuuluu alaluokat ”liha- ja makkaraleikkeleet”, ”jauheliharuoat” ja niin edelleen. Elintarvikeluokat sisältävät sekä ruokalajeja (esim. jauhelihalihakeitto) että yksittäisiä elintarvikkeita (esim. meetvursti).

Elintarvikkeiden luokittelu ei ole yksiselitteistä. Esimerkiksi Finravinnossa omenapiirakka kuuluu ”hedelmä- ja marjaruokiin”, mutta yhtä hyvin se voisi kuulua myös ”kakkuihin ja leivoksiin”. Tärkeintä kuitenkin on, että lukijalla on mahdollisimman hyvä käsitys siitä, millaisia ratkaisuja tutkija on tehnyt.

Raaka-aineluokat

Raaka-aineluokittelua varten ruokalajit (esim. jauhelihakeitto) hajotetaan laskennassa raaka-aineikseen (esim. jauheliha, peruna, porkkana, vesi, suola). Tässä luokittelussa keitosta tuleva jauheliha päätyy luokkaan ”liha”, porkkana päätyy luokkaan ”kasvikset” jne. Raaka-aineluokat voivat sisältää myös alaluokkia. Esimerkiksi raaka-ainepääluokka ”hedelmät ja marjat” sisältää Finravinto 2012 -raportissa alaluokat ”hedelmät”, ”hedelmäsäilyke”, ”marjat” ja ”täysmehut”.

Tiedon siirto AivoDietistä

AivoDietissä laskentavaihetta (eli output-tiedoston luomista) kutsutaan ”ravintolaskelman vienniksi” tai ”ravintolaskelman siirroksi”.

Laskennan voi tehdä eri tasoilla:

Saantitaso

Tässä lasketaan energian ja ravintoaineiden kokonaissaanti kutakin tallennettua päivää kohti. Valitse toiminto ”ravintolaskelman vienti” ja tutkittavien ryhmä, jonka haluat laskea. Älä laita rastia kumpaankaan ruutuun.

Ruokalajitaso

Ruokalajitason laskentaa käytetään, kun halutaan raportoida tuloksia elintarvikeluokissa.

Valitse ”ravintolaskelman vienti” ja ryhmä, jonka haluat laskea. Laita rasti ruutuun ”Ruokalajeittain”. Jokaiselle tallennetulle ruoalle tai ruokalajille tulee output-tiedostoon oma rivi.

Raaka-ainetaso

Raaka-ainetason laskentaa käytetään, kun halutaan raportoida tuloksia raaka-aineluokissa.

Valitse ”ravintolaskelman vienti” ja ryhmä, jonka haluat laskea. Laita rasti sekä ruutuun ”Ruokalajeittain” että ”Elintarvikkeet”. Jokaiselle ruokalajin raaka-aineelle tulee output-tiedostoon oma rivi. Ruokalajin nimeä ei ole rivillä lainkaan. Ruoat, joilla ei ole reseptiä, tulevat omille riveilleen samalla tavalla kuin ruokalajitason laskennassa.

Viimeksi päivitetty 31.3.2019