dataframe umwandeln

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

dataframe umwandeln

Beitrag von steven_y »

Ich möchte einen dataframe transformieren, hier der Input:

Code: Alles auswählen

key_1 <- c('a','a','a','b')
key_2 <- c('x','y','z','x')
value_1 <- c(22,33,44,55)

df <- data.frame(key_1,key_2,value_1)
Es ist sehr umständlich, den gewünschten Output zu beschreiben, aussehen soll es wie folgt.

Code: Alles auswählen

key_1 <- c('a','a','a','b')
key_2 <- c('x','y','z','x')
value_x <- c(22,22,22,55)
value_y <- c('na',33,'na','na')
value_z <- c('na','na',44,'na')
df2 <- data.frame(key_1,key_2,value_x,value_y,value_z)
Ich hatte gedacht, mit tidyverse::pivot_wider zu arbeiten. Dabei wird aber nicht berücksichtigt, dass value_x auch für die Werte y und z für key_2 erhalten bleiben soll.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: dataframe umwandeln

Beitrag von bigben »

steven_y hat geschrieben: Do Feb 04, 2021 11:34 amEs ist sehr umständlich, den gewünschten Output zu beschreiben, aussehen soll es wie folgt.
Wir wollen Dir natürlich keine Umstände machen, aber hilfreich wäre es schon.

Ich verstehe z. B. nicht, warum df2[2,3] == 22 ist, aber df2[3,4] != 33

Gleichzeitig bin ich einigermaßen sicher, dass die deutsche Sprache Möglichkeiten bietet, Regeln für diese Umorganisation auszudrücken.

Gruß,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: dataframe umwandeln

Beitrag von steven_y »

Besten Dank für die schnelle Rückmeldung.

Die Idee ist, dass key_2 Kategorien beschreibt. key_2 = x ist dabei die erste Ebene einer Kategorisierung, y und z die zweite Ebene einer Kategorisierung. Daher sollten die Werte für x auch für die nachfolgende Ebene vorhanden sein.

Da y und z auf der gleichen Ebene sind, df2[3,4] != 33 gilt diese Aussage. Es ist etwas unglücklich von mir gewesen, y und z zu verwenden, es hätte auch nur y getan.

Einigermaßen verständlich?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: dataframe umwandeln

Beitrag von bigben »

Verständlich aber knapp. Darf man Annahmen bezgl key_1 machen? Ist der immer genau dreimal ein Buchstabe und dann ein neuer oder macht das, was es will?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: dataframe umwandeln

Beitrag von steven_y »

Die Anzahl der Ausprägungen von key_2 variiert. Es kann also sein, dass es für key_1 = a drei Ausprägungen für key_2 gibt, key_1 = b hat eine Ausprägung (key_2) und key_1 = c hat fünf Ausprägungen (key_2). Es gibt also 3 Reihen mit key_1 = a, 1 Reihe mit key_1 = b und 5 Reihen mit key_1 = c
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: dataframe umwandeln

Beitrag von steven_y »

Möglicherweise kann ich ja alle Zeilen füllen, das werde ich mal probieren.

Allerdings entfernt pivot_wider alle anderen Spalten. Lässt sich das verhindern?
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: dataframe umwandeln

Beitrag von steven_y »

Wenn ich den DF mit pivot_wider umwandele, verschwinden alle Spalten, die nicht in

id_cols, names_from oder values_from enthalten sind. Lässt sich das ändern?
Antworten