Š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