Forum » Pomoč in nasveti » R program, prosim za pomoč
R program, prosim za pomoč
poletje2016 ::
Dober dan,
sem popoln začetnik v R (studio) programu. Lahko kdo pomaga pri par zadevah (predvsem izdelava IF stavkov). Vam bo enostavno, vam pa enostavno.
Imam podatke za maksimalno temperaturo po dnevih.
Ogromne težave mi dela IF koda:
Iz podatkov poskušam ugotoviti naslednje:
Povprečno (+st.odklon) in maksimalno trajanje vročinskega vala,
· število vročinskih valov,
· število dni v vročinskih valovih,
· datum najzgodnejšega in najpoznejšega začetka vročinskega vala,
· ploščino nad pragom (29,5°C, seštejemo vsoto temperatur nad pragom v
vseh valovih).
Kako in ali smem priložiti file s podatki ?
sem popoln začetnik v R (studio) programu. Lahko kdo pomaga pri par zadevah (predvsem izdelava IF stavkov). Vam bo enostavno, vam pa enostavno.
Imam podatke za maksimalno temperaturo po dnevih.
Ogromne težave mi dela IF koda:
Iz podatkov poskušam ugotoviti naslednje:
Povprečno (+st.odklon) in maksimalno trajanje vročinskega vala,
· število vročinskih valov,
· število dni v vročinskih valovih,
· datum najzgodnejšega in najpoznejšega začetka vročinskega vala,
· ploščino nad pragom (29,5°C, seštejemo vsoto temperatur nad pragom v
vseh valovih).
Kako in ali smem priložiti file s podatki ?
- spremenil: poletje2016 ()
ales85 ::
Podatke lahko deliš preko WeTransfer (ali druge storitve). Sicer pa, če ti kodiranje dela težave, lahko veliko narediš že z R Commander-jem.
Zgodovina sprememb…
- spremenil: ales85 ()
poletje2016 ::
ali kdo se kdo tu spozna na R (studio) okolje?
hvala
hvala
Podatke lahko deliš preko WeTransfer (ali druge storitve). Sicer pa, če ti kodiranje dela težave, lahko veliko narediš že z R Commander-jem.
poletje2016 ::
Imam podatke v txt datoteki v 4 stolpcih. Podatki so za dnevne maximalne temperature za dosti let.
Imam kodo / kode, ki pa ne dela :(
Kaj predlagaš, kam ti jo dam COPY / PASTE , da malo pogledaš. Hvala
Imam kodo / kode, ki pa ne dela :(
Kaj predlagaš, kam ti jo dam COPY / PASTE , da malo pogledaš. Hvala
amacar ::
Lahko prilepiš tu v [ st.koda][ /st.koda] značke (izbriši presledek v znački).
Zgodovina sprememb…
- spremenil: amacar ()
amacar ::
Vsebino prilepiš v zgoraj omenjene st.koda značke. Prilepi tudi kodo, ki si jo že napisal.
Zgodovina sprememb…
- spremenil: amacar ()
poletje2016 ::
Imam tele podatke v txt datoteki:
leto mesec dan temmax
1879 1 1 7,8
1879 1 2 7,5
1879 1 3 5,6
1879 1 4 6,2
in še ostala leta
Vročinski val je trenutno pri nas definiran kot vsaj 5 zaporednih dni z maksimalno temperaturo zraka
>=29,5 °C.
Kode moram narediti za:
Povprečno (+st.odklon) in maksimalno trajanje vročinskega vala
število vročinskih valov
število dni v vročinskih valovih,ž
.................
moja NEUSPEŠNA koda :(
leto mesec dan temmax
1879 1 1 7,8
1879 1 2 7,5
1879 1 3 5,6
1879 1 4 6,2
in še ostala leta
Vročinski val je trenutno pri nas definiran kot vsaj 5 zaporednih dni z maksimalno temperaturo zraka
>=29,5 °C.
Kode moram narediti za:
Povprečno (+st.odklon) in maksimalno trajanje vročinskega vala
število vročinskih valov
število dni v vročinskih valovih,ž
.................
moja NEUSPEŠNA koda :(
library("forecast", lib.loc="~/R/win-library/3.1") data<-read.table("LJUBLJANA.txt",header=TRUE,sep="\t"); head(data) dec = ","; # pisanje v indekse j<-1; nad29.5 <- 0; temmax<-1:46816; dim(temmax)<-c(46816,1); #podatki za obdobje 1879 - 2016 for(i in 1:length(data$leto)) { if(data[i,1] >= 1879 & data[i,1] <= 2016) { if(data[i,4] > 29.5){nad29.5 <- nad29.5 + 1;} ## ko se leto zamenja vpišemo podatke in ponastavimo indekse if(data[i,1] > j+1878){temmax[j,1] <- nad29.5;nad29.5 <- data[i,4];j <- j+1;} } #grafični prikaz summary(temmax) cas.niz<-ts(temmax, start=1879) ma5<-ma(cas.niz, order=5) ma10<-ma(cas.niz, order=10); plot(1879:2016, temperatura, main="maksimalna temperatura (1879-2016)", type="l",lwd=2, xlab= "leto", ylab= "temperatura[°C]", ylim=c(min(temperatura)-5,max(temperatura)+5), lines(ma5, col="orange", lwd=2), lines(ma10, col="red",lwd=2 ), abline(h=min(temperatura), col="blue",lty=2), abline(h=mean(temperatura), col="black",lty=2), abline(h=max(temperatura), col="red",lty=2), legend("top", ncol = 3, cex=0.5, legend=c("osnoven graf", "povprečje na 5 let", "povprečje na 10 let", "max", "min", "povprečje"), col=c("black", "orange", "red", "red","blue","black"), lwd=c(2,2,2,1),lty=c(1,1,1,2)),
poletje2016 ::
moja koda za:
število vročinskih valov
j - 1
a 0
st 0
nad29.5 -1:46816
dim(nad29.5)-c(46816,1)
for(i in 1:length(data$leto)) {
if(data[i,1] 1879 & data[i,1] 2016 ) {
### med letom
if(data[i,1] j+1879){
### če podatek ustreza padavinskemu dogodku
if(data[i,4] 29.5 & a 1 ){a 2;st st + 1; }
#### če podatek ustreza novemu dogodku
if(data[i,4] 29.5){a 29.5;}
}
### ko podatek doseže konec leta ga vpišemo
if(data[i,1] j+1878){nad29.5[j,1] st;st 0;
if(data[i,4] 29){st st + 1;}
j j+1;}
which.min(nad29.5)
which.max(nad29.5)
}
}
in za število dni v vročinskih valovih,
ne znam narediti
...........
hvala
število vročinskih valov
j - 1
a 0
st 0
nad29.5 -1:46816
dim(nad29.5)-c(46816,1)
for(i in 1:length(data$leto)) {
if(data[i,1] 1879 & data[i,1] 2016 ) {
### med letom
if(data[i,1] j+1879){
### če podatek ustreza padavinskemu dogodku
if(data[i,4] 29.5 & a 1 ){a 2;st st + 1; }
#### če podatek ustreza novemu dogodku
if(data[i,4] 29.5){a 29.5;}
}
### ko podatek doseže konec leta ga vpišemo
if(data[i,1] j+1878){nad29.5[j,1] st;st 0;
if(data[i,4] 29){st st + 1;}
j j+1;}
which.min(nad29.5)
which.max(nad29.5)
}
}
in za število dni v vročinskih valovih,
ne znam narediti
...........
hvala
h1427096 ::
mislim, da iščeš rle funkcijo:
ali te bolj zanima kako bi z if stavki?
r <- rle(data$temmax >= 29.5)
ali te bolj zanima kako bi z if stavki?
Zgodovina sprememb…
- spremenil: h1427096 ()
h1427096 ::
a lahko še enkrat pošlješ svojo kodo, da vidim kako si se sploh lotil? V prvem postu ti jo namreč nekaj manjka, v drugem pa si poszsbil na [ st.koda] tag in manjkajo vsi znaki za manjše in večje..
za začetek vsekakor predlagam, da decimalni simbol določiš kot parameter read.table funkcije, se pravi:
Sedaj lahko z ukazom
preveriš, da je stolpec temmax prebran kot numeric in ne kot factor, ki se obnaša precej čudno - priporočam, da se read.table ukazom vselej določi parameter stringsAsFactors = FALSE.
Drugo, zaradi encodinga imaš verjetno težave z imeni stolpcev. Ker so stolpci itak int/num, je najbolje, da si jih kar na novo poimenuješ skozi kodo:
S tem se boš lahko na stolpce skliceval z imeni, to z indexi je namreč zelo težko berljivo
za začetek vsekakor predlagam, da decimalni simbol določiš kot parameter read.table funkcije, se pravi:
data<-read.table("LJUBLJANA.txt",header=TRUE,sep="\t", dec=",")
Sedaj lahko z ukazom
str(data)
preveriš, da je stolpec temmax prebran kot numeric in ne kot factor, ki se obnaša precej čudno - priporočam, da se read.table ukazom vselej določi parameter stringsAsFactors = FALSE.
Drugo, zaradi encodinga imaš verjetno težave z imeni stolpcev. Ker so stolpci itak int/num, je najbolje, da si jih kar na novo poimenuješ skozi kodo:
names(data) <- c("leto", "mesec", "dan", "temmax")
S tem se boš lahko na stolpce skliceval z imeni, to z indexi je namreč zelo težko berljivo
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Klimatska napravaOddelek: Pomoč in nasveti | 4323 (3826) | AC_DC |
» | Računalnik je obsedel hudič (strani: 1 2 )Oddelek: Pomoč in nasveti | 7189 (5135) | GTX970 |
» | Fx-8120 (strani: 1 2 )Oddelek: Navijanje | 13821 (12446) | barocco |
» | Kdo pa rabi pečko poleti?Oddelek: Hlajenje in modifikacije | 1521 (1164) | Neo32 |