Neue Zeile auf Basis gefilterter Daten berechnen

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

Moderatoren: EDi, jogo

Antworten
benne
Beiträge: 12
Registriert: Mo Okt 08, 2018 1:42 pm

Neue Zeile auf Basis gefilterter Daten berechnen

Beitrag von benne »

Hallo allerseits,

ich bearbeite gerade mehrere Datensätze, die alle eine ähnliche Struktur haben.
Auf Ebene der Stadtteile 1 bis 4 liegen jeweils Werte vor und zusätzlich ist noch für jede Datenspalte der Wert für die gesamte Stadt angegeben (Stadtteil 0).
tabelle.png
tabelle.png (87.52 KiB) 239 mal betrachtet
Für die weitere Arbeit möchte ich aber eine Zeile mit den Werten der nicht zuzuordnenden Datensätze anstelle der gesamtstädtischen Werte haben.
Dazu soll der fiktive Stadtteil 9 eingefügt werden und die Tabelle soll zum Schluss wie folgt aussehen:
tabelle9.png
tabelle9.png (87.52 KiB) 239 mal betrachtet
Jetzt kaspere ich schon seit knapp zwei Stunden an dem Problem herum, habe es mit Filtern und Spaltensummen versucht, aber irgendwie sehe ich den Wald vor lauter Bäumen nicht mehr :?
Kann mir jemand einen guten Tipp geben, wie das funktionieren könnte?
Ich habe wieder mal das Gefühl, dass die Lösung quasi auf dem Präsentierteller vor mir liegt, ich sie aber trotzdem nicht sehe.

Schönen Gruß
Benne
Ein Freund ist jemand, der sich deinen Müll anhört, dir sagt dass es Müll ist und trotzdem weiter zuhört.
Robin Williams
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neue Zeile auf Basis gefilterter Daten berechnen

Beitrag von bigben »

Hallo Benne,

ich wiederhole mich mal vom 8. Oktober:
Wenn nun fünf von uns sich an einer Lösung versuchen würden, was wäre besser: Wenn Du einen Beispieldatensatz zum Austesten bereit stellst oder wenn jeder von den Fünf sich seinen eigenen Beispieldatensatz erstellt? Eben. Darum poste bitte zu solchen Fragen, die im Grunde gern gesehen sind, ein reproduzierbares Beispiel,
Ahne ich richtig, dass Stadteil 9 den Wert von Stadtteil 0 minus die Werte aller Stadtteile 1 bis 4 enthalten soll? Wenn ja, dann ist das hier vielleicht ein Anfang für Dich:

Code: Alles auswählen

stadt1 <- data.frame(stadtteil = c(1,2,3,4,0),
                  einwohner = c(1000, 1000, 1000, 1000, 10000),
                  arbeitslose = c(5, 10, 15, 15, 45))

erstelle9 <- function(stadt, stadtteile = 1:4){
  zeile9 <- 9
  for(spalte in 2:ncol(stadt)){
    zeile9[spalte] <- stadt[stadt$stadtteil==0, spalte] - sum(stadt[stadt$stadtteil %in% stadtteile, spalte])
  }
  
  return(rbind(stadt, zeile9))
  
}

erstelle9(stadt1)
Wenn nein, erläutere das bitte nochmal, was 9 bedeutet.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten