Datenverfügbarbkeit prüfen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Datenverfügbarbkeit prüfen

Beitrag von jessi »

Hallo liebe Forum-Mitglieder,

mal wieder hat sich ein Problem ergeben.

Ich habe Daten mehrerer Stationen und Jahre , diese sind über die Monate Dez/Jän/Feb/März gemittelt. Jetzt ist leider das Problem aufgetreten, dass die Datenverfügbarkeit nicht besonders gut ist und ich deshalb jene Stationen "ausmisten" möchte, die eine zu geringe Dichte aufweisen.

Bisher habe ich mal folgendes probiert:
daten_test.csv
(237.14 KiB) 27-mal heruntergeladen

Code: Alles auswählen

#Daten einlesen (gekürztes Datenfile, da sonst  zu groß) 
cory <- read.csv(daten_test.csv", dec = ",", sep = ";")

## data.frame':   677499 obs. of  9 variables:
###  $ Datum   : Factor w/ 12784 levels "","01.01.1981",..: 2 422 842 1262 1682 2102 2522 2942 3362 3782 ...
###  $ DoY     : int  1 2 3 4 5 6 7 8 9 10 ...
###  $ Pollen  : int  -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
### $ Codename: Factor w/ 7 levels "","ATKRIM","ATLINZ",..: 2 2 2 2 2 2 2 2 2 2 ...
### $ Rest    : Factor w/ 2 levels "","txt": 2 2 2 2 2 2 2 2 2 2 ...
### $ Jahr    : int  1981 1981 1981 1981 1981 1981 1981 1981 1981 1981 ...
### $ Monat   : Factor w/ 13 levels "","April","August",..: 6 6 6 6 6 6 6 6 6 6 ...
### $ Tag     : int  1 2 3 4 5 6 7 8 9 10 ...
### $ dm      : int  101 201 301 401 501 601 701 801 901 1001 ...

### Daten der entsprechenden Monate
DJFM <- subset(cory, coryT$Monat == "Dezember" | cory$Monat == "Januar" | cory$Monat == "Februar" | cory$Monat == "März")
mittel_DJFM <- aggregate(DJFM$Pollen ~ Codename + Jahr, DJFM, mean)

### data.frame':   210 obs. of  3 variables:
###  $ Codename   : Factor w/ 7 levels "","ATKRIM","ATLINZ",..: 2 3 4 5 6 7 2 3 4 5 ...
### $ Jahr       : int  1981 1981 1981 1981 1981 1981 1982 1982 1982 1982 ...
### $ DJFM$Pollen: num  -1 1.37 -1 -1 -1 ...

### Aufsplitten nach Stationen
station_DJF <- split(mittel_DJFM, paste(mittel_DJFM$Codename))
Jetzt möchte ich gerne für jede Station die Aussage wie oft (am besten in Prozent) der Wert -1 (=Fehlwert) vorkommt. Ich dachte daran, mit dem Befehl "table" zu arbeiten.

Code: Alles auswählen

round(table(station_DJFM[[15]]$Pollen_DJFM)/length(station_DJFM)*100,2)
Das scheint mir aber relativ aufwendig. Leider wurde ich im Internet auch nicht so recht fündig. Gibts hier vielleicht ein R-Befehle, der diese Überprüfung einfacher machen?

Danke für eure Hilfe.

Grüße, Jessi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenverfügbarbkeit prüfen

Beitrag von jogo »

Hallo Jessi,

bei mir sieht das so aus:

Code: Alles auswählen

library("data.table")
D <- fread("http://forum.r-statistik.de/download/file.php?id=465", na.strings="-1")
D[, 100*sum(is.na(Pollen))/.N, Codename]
mit dem Ergebnis:

Code: Alles auswählen

> D[, 100*sum(is.na(Pollen))/.N, Codename]
   Codename        V1
1:   ATOBER  96.98079
2:   ATREUT  76.12077
3:   ATSAGB  97.89570
4:          100.00000
Als Zugabe hier noch die absoluten Zahlen:

Code: Alles auswählen

> D[, .(.N, sum(is.na(Pollen))), Codename]
   Codename     N    V2
1:   ATOBER  1093  1060
2:   ATREUT  1093   832
3:   ATSAGB  1093  1070
4:          17538 17538
Randbemerkung:
Was mich an den von Dir bereitgestellten Daten wundert, ist die hohen Anzahl von Zeilen, in denen keinerlei Daten stehen (17538). Nur 3279 Zeilen enthalten Daten.

Gruß, Jörg
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: Datenverfügbarbkeit prüfen

Beitrag von jessi »

Lieber Jörg,

vielen Dank für deine Hilfe :)

Grüße Jessi
Antworten