Mióta a lányom "kipottyant", a feleségemmel elhitettem hogy ÉLETBEVÁGÓan fontos a gyerek súlyát naponta mérni. Egy ideig még az etetések előtt és utáni mérésre is sikerült rávenni, amelyek természetesen ugyancsak életbevágóan fontosak voltak, mind a magunk mind lányunk boldogsága és jóléte szempontjából.
A háttérben természetesen csak a bennem lévő monoton hang dolgozott; ADAT...ADAT...gyűljön! gyűljön! A pompás tervnek kb. a második "stagnálós" időszak vetett véget.
-Ez a gyerek nem hajlandó enni! És kurvára idegesít hogy ezt még látom is (minden este update-eltem neki a kiváló ábrát rövid elemzésekkel tűzdelve a grafikon profilját...)
Szóval adva van itt ez az adattömb. A kialakításáról annyit hogy akkor ez jó ötletnek tűnt...
A Type változó jelöli hogy a gyerek ruhában vagy mezítelenül lett e mérve, az Obs az adott napon belüli sorrendre utal, a Resp1 és 2 pedig a vonatkozó etetés előtti (Resp1) vagy utáni (Resp2) súlyok x*10 grammban kifejezve.
Az eredeti adattömböt Excel-ből olvastam be az RODBC csomag segítségével. Itt jegyezném meg hogy a biostatisztikus állandó problémája az, hogy a kutatók a táblázatkezelők miatt hajlamosak a "rövid-széles" (a finom erotikára fogékonyak itt kicsit elmélázhatnak...) adattömb kialakításra. Ennek oka nem az a bornírt szándék hogy minket megszívassanak, hanem az hogy a táblázatkezelőkbe bele lett hekkelve az ábra készítés funkció is - ami praktikusan képtelen a normális, "hosszú - keskeny" adattömb kezelésére. Így aztán a legváltozatosabb adattömb kialakításokkal lehet találkozni. Személyes kedvenceim az ún. színezők (kutyatenyésztők most ámulnak egyet). E típus az Excel cellaszíneit is felhasználják adataik jó esetben szépítésére de inkább valamilyen nem is elhanyagolható okból történő megkülönböztetésére és lelkesen magyarázzák hogy ez milyen jó! Nekik. Nekem HORROR. Az ilyen adatok gatyába rázása egy minőségbiztosítási rémálom (erről majd talán máskor írok egy pár sort...).
Visszakanyarodva, így utólag annyira már nem jó ötlet, kezdve azzal hogy a meztelen súly esetében (Type=="n") éppen fordítva van a bevitel, mivel itt kvázi mindig etetés előtti súlyról van szó. Ráadásul, ez a formátum a súly szempontjából egy részlegesen "rövid-széles" adattömbnek minősül. Először tehát ezen kéne segíteni!
R-ben erre a kiváló reshape() függvény használatos (SASolók mindezt behelyettesíthetik egy PROC TRANSPOSE-val).
LongData <- reshape(BabyWeight,varying = list(4:5),idvar = c("Date","Type","Obs"),
v.names = "Weight",direction = "long",times=c("Before","After"))
ilyen "szép" lett:
Date Type Obs Weight Days time
2011-10-10.s.1.Before 2011-10-10 s 1 411 4 Before
2011-10-10.s.2.Before 2011-10-10 s 2 429 4 Before
2011-10-10.s.3.Before 2011-10-10 s 3 409 4 Before
2011-10-10.s.4.Before 2011-10-10 s 4 428 4 Before
A fura izék (pl.: 2011-10-10.s.1.Before) az első "oszlopban" a sornevek.
Akkor megvan az adattömb. Hurrá! Kár hogy van egy rahedli nullás rekord, néhány hibás adatbevitel meg hogy az etetés előtti-utáni méricskézés valahol a 40. naptól almás...szóval szűrünk.
LongSubData <- subset(LongData, Days<40 & Weight>100)
Aztán kijavítjuk a "pucér" mérés típus hibáját
LongSubData$time[with(LongSubData,Type=="n")] <- "Before"
Valamint a babamérleg 10g-os pontosságig jelez ki tehát:
LongSubData$Weight <- with(LongSubData,Weight*10)
Na ennyit az eleinte jó ötletnek tűnt típusú adattömbről - dióhéjban.