MENIU

PRADŽIA | APIE PUSLAPĮ | KONTAKTAI | AUTORINĖS TEISĖS

Similar page in ENGLISH is available HERE.

Search This Blog

Saturday, July 2, 2016

09 tema. Sukuriame stulpelį su pavėlintais duomenimis


Ši tema apie tai, kaip R statistinėje programoje turimoje lentelėje sukurti stulpelį su pavėlintais (lagged) duomenimis. 

Dirbant su laiko eilučių duomenimis, dažnai į modelį norisi įtraukti pavėlintas kintamųjų reikšmes. Pavyzdžiui, jeigu ketiname prognozuoti rytojaus temperatūrą, į modelį greičiausiai norėsime įtraukti šios dienos ar vakar dienos temperatūrą. Todėl duomenų lentelėje norėsime sukurti stulpelį su praeitos ar užpraeitos dienos temperatūra.

Pirmiausia į R aplinką įkelkime temperatūros ir su ja susijusių kintamųjų duomenis. Galime įkelti štai šią lentelę:


Data
Temp
Dew
Pressure
WindSpd
Precip
13104
20160215
-7
-17
1034
6
0
13105
20160216
8
6
1013
14
6
13106
20160217
4
-2
1013
12
5
13107
20160218
1
-11
1027
13
0
13108
20160219
-1
-13
1034
8
0
13109
20160220
8
0
1017
14
0
13110
20160221
10
1
1012
7
0
13111
20160222
7
0
1018
7
1
13112
20160223
4
-1
1025
11
0
13113
20160224
7
5
1015
13
4
13114
20160225
10
7
994
22
10
13115
20160226
3
-9
1007
20
0
13116
20160227
0
-12
1019
13
0
13117
20160228
6
-3
1015
13
0
13118
20160229
9
3
1006
12
0
13119
20160301
8
-3
1017
12
1
13120
20160302
8
0
1006
20
2
13121
20160303
0
-14
1022
13
0
13122
20160304
1
-4
1021
10
1
13123
20160305
2
-10
1021
9
1
13124
20160306
3
-7
1025
6
0
13125
20160307
5
0
1024
10
0
13126
20160308
11
3
1020
7
0
13127
20160309
10
5
1020
5
0
13128
20160310
15
8
1016
6
0
13129
20160311
16
8
1017
9
0
13130
20160312
9
0
1026
8
0
13131
20160313
13
3
1017
8
0
13132
20160314
9
3
1019
13
0
13133
20160315
9
6
1010
14
5

Tiesioginis kopijavimas iš šio puslapio gali nesuveikti, tad pirma lentelę nukopijuokime į skaičiuoklę, o iš skaičiuoklės - į kompiuterio atmintį. Duomenų įkėlimui iš kompiuterio atminties į R naudojame šią komandą:

lentele<-read.table("clipboard",header=TRUE)

Komanda "show(lentele)" mums leis įsitikinti, kad lentelė buvo įkelta:


Norėdami sukurti stulpelį su praeitos dienos temperatūra, įveskime tokią komandą:

lentele$lagTemp <- c(NA, head(lentele$Temp, -1))

kur:
kairiau ženklo "<-" esanti komandos dalis reiškia, kad objekte "lentele" bus sukurtas stulpelis pavadinimu "lagTemp";
dešinėje pusėje esantis c() nurodo, kokiais duomenimis sukurtas stulpelis bus užpildytas: pirmoje eilutėje bus pateiktas "NA" (kadangi pirmos eilutės atveju vakar dienos temperatūra nėra žinoma), o į kiekvieną kitą eilutę bus perkelta lentelės "lentele" stulpelio "Temp" reikšmė iš ankstesnės ("-1") eilutės.

Komanda "show(lentele)" mums leis įsitikinti, kad buvo sukurtas papildomas stulpelis:


Jeigu norime sukurti stulpelį su užpraeitos dienos temperatūra, reikėtų įvesti tokią komandą:

lentele$lag2Temp <- c(NA, NA, head(lentele$Temp, -2))

Funkcijoje "c()" narį "NA" nurodėme du kartus, nes užpraeitos dienos temperatūra nebus žinoma pirmų dviejų eilučių atveju. Vietoje "-1" panaudojome "-2", nes vėliname jau ne viena, o dvejomis dienomis.

Alternatyviai, galime įvesti tokią komandą:

lentele$lag2Temp <- c(NA, head(lentele$lagTemp, -1))

Funkcijoje "c()" narį "NA" vėl nurodėme vieną kartą, nes duomenis imame nebe iš "Temp" stulpelio, o iš praeitos dienos temperatūros stulpelio "lagTemp", kurio reikšmė pirmoje eilutėje yra "NA". Atitinkamai vėl naudojame "-1", kadangi praeitos dienos temperatūrą vėliname viena diena.

No comments:

Post a Comment