Datenmanagement

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

Moderatoren: EDi, jogo

Antworten
Rubilu
Beiträge: 5
Registriert: Mi Okt 31, 2018 10:42 am

Datenmanagement

Beitrag von Rubilu » Di Jun 04, 2019 5:15 pm

Hallo zusammen!

Mein Datensatz (s. Anhang) lässt sich leider nicht so leicht bändigen.
Zur Erklärung der Abbildung:
ID beschreibt den Patienten, P das Probedatum, M das Medikament mit der dazugehörigen Dosierung (D).
Um weiter verfahren zu können, sollen die Daten sowohl nach ID, als auch nach Probedatum sortiert werden und die Medikamente mit den dazugehörigen Daten nebeneinander statt untereinander aufgeführt werden.

Ich hab das Problem, das alle meine Versuche den optimalen Zustand zu erreichen, gescheitert sind. Ist das überhaupt mit R möglich? :cry: :cry: :cry: :?

Es würde mir daher wirklich sehr helfen, wenn jemand eine Idee hat, wie ich am Besten weiter vorgehen soll. Ich bin echt verzweifelt und mit meinem Latein am Ende.

Vielen Dank im Vorraus!
Dateianhänge
Beispieldataframe.PNG

Benutzeravatar
EDi
Beiträge: 888
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datenmanagement

Beitrag von EDi » Di Jun 04, 2019 6:57 pm

Code: Alles auswählen

df <- data.frame(ID = c(1,1,2,2, 2),
                 P = c("01.01.2000", "01.01.2000", "02.01.2000", "02.01.2000", "02.01.2000"),
                 M = LETTERS[1:5],
                 D = c(10, 25, 4, 12.5, 30)
)

library(dplyr)
library(tidyr)

df %>%
  group_by(ID) %>%
  mutate(occ = paste0('M', row_number()),
         occ2 = paste0('D', row_number())) %>%
  ungroup() %>%
  spread(occ, M)%>%
  spread(occ2, D)

Wenn man aber solche Purzelbäume machen muss, sollte man über seine Datenstruktur nachdenken......
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.

jogo
Beiträge: 1479
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo » Di Jun 04, 2019 8:20 pm

Hallo Rubilu,
Rubilu hat geschrieben:
Di Jun 04, 2019 5:15 pm
Zur Erklärung der Abbildung:
ID beschreibt den Patienten, P das Probedatum, M das Medikament mit der dazugehörigen Dosierung (D).
Um weiter verfahren zu können, sollen die Daten sowohl nach ID, als auch nach Probedatum sortiert werden und die Medikamente mit den dazugehörigen Daten nebeneinander statt untereinander aufgeführt werden.
das klingt do nach einem typischen Problem der Sorte: reshape from long to wide.
https://stackoverflow.com/questions/589 ... ide-format

Gruß, Jörg

Benutzeravatar
student
Beiträge: 337
Registriert: Fr Okt 07, 2016 9:52 am

Re: Datenmanagement

Beitrag von student » Mi Jun 05, 2019 12:06 pm

Hallo Rubilu,

zum long-wide-Format habe ich auch noch etwas!
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de: https://www.faes.de
Datenanalyse mit R: https://www.r-statistik.de
Ad-Oculos-Projekt: https://www.ad-oculos.faes.de

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)

consuli
Beiträge: 436
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Datenmanagement

Beitrag von consuli » Fr Jun 07, 2019 9:21 pm

jogo hat geschrieben:
Di Jun 04, 2019 8:20 pm
das klingt do nach einem typischen Problem der Sorte: reshape from long to wide.
Genau.
Auch die RDokumentation hat stats:reshape sehr schön aufbereitet.
https://www.rdocumentation.org/packages ... cs/reshape
"Sehet die Vögel unter dem Himmel an: sie säen nicht, sie ernten nicht, sie sammeln nicht in die Scheunen; und euer himmlischer Vater ernährt sie doch." (Matthäus 6, V. 26)

jogo
Beiträge: 1479
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo » Sa Jun 08, 2019 2:39 pm

in einer Richtung habe ich mit stats::reshape immer große Probleme, es richtig zu parametrisieren.
Einmal habe ich behelfsweise die Spalten umbenannt (das muss wohl bei wide to long gewesen sein).
consuli hat geschrieben:
Fr Jun 07, 2019 9:21 pm
jogo hat geschrieben:
Di Jun 04, 2019 8:20 pm
das klingt do nach einem typischen Problem der Sorte: reshape from long to wide.
Genau.
Auch die RDokumentation hat stats:reshape sehr schön aufbereitet.
https://www.rdocumentation.org/packages ... cs/reshape

Hufeisen
Beiträge: 123
Registriert: Fr Aug 31, 2018 6:34 pm

Re: Datenmanagement

Beitrag von Hufeisen » Sa Jun 08, 2019 3:07 pm

Lieber jogo,

es wäre ein glattes Wunder, wenn ich als Krümel Dir als Brotlaib noch etwas beibringen könnte! Aber in meinen kurzen Ausflügen ins tidyverse hat es sich bewährt, jede Variable "mit der man noch etwas machen will" in der Funktion melt() als id.vars = "XY" zu deklarieren und den Rest 'schmelzen' zu lassen. "Mit der man noch etwas machen will" bedeutet zum Beispiel die Variable für die Faceten einer ggplot2-Grafik zu verwenden.

Demütig,
Hufeisen

consuli
Beiträge: 436
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Datenmanagement

Beitrag von consuli » Sa Jun 08, 2019 3:26 pm

jogo hat geschrieben:
Sa Jun 08, 2019 2:39 pm
in einer Richtung habe ich mit stats::reshape immer große Probleme, es richtig zu parametrisieren.
Einmal habe ich behelfsweise die Spalten umbenannt (das muss wohl bei wide to long gewesen sein).
Das hatte ich auch schon öfter bei wide -> long. Möglicher Weise hat stats::reshape einen kleinen Bug?
Aber irgendwie ging es nach etwas rumfrickeln dann doch immer. Möglicher Weise gibt es undokumentierte Anforderung an die Namen der Spalten, die zu einer zusammengefasst werden sollen.

@student
Die long->wide- bzw. wide->long-Konversion ist ein wiederkehrendes Thema im Forum. Möglicher Weise hättest Du bei Gelegenheit Interesse stats::reshape in Deine Tips und Tricks Sammlung aufzunehmen?
"Sehet die Vögel unter dem Himmel an: sie säen nicht, sie ernten nicht, sie sammeln nicht in die Scheunen; und euer himmlischer Vater ernährt sie doch." (Matthäus 6, V. 26)

jogo
Beiträge: 1479
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo » Sa Jun 08, 2019 6:31 pm

Liebes Hufeisen,
Hufeisen hat geschrieben:
Sa Jun 08, 2019 3:07 pm
es wäre ein glattes Wunder, wenn ich als Krümel Dir als Brotlaib noch etwas beibringen könnte!
was sind denn das für Vergleiche? :shock:
Du musst Dein Licht nicht unter den Scheffel stellen, denn wenn Du wüsstest, wie ich die ersten Jahre mit R rumgestümpert habe ...
Aber in meinen kurzen Ausflügen ins tidyverse hat es sich bewährt, jede Variable "mit der man noch etwas machen will" in der Funktion melt() als id.vars = "XY" zu deklarieren und den Rest 'schmelzen' zu lassen. "Mit der man noch etwas machen will" bedeutet zum Beispiel die Variable für die Faceten einer ggplot2-Grafik zu verwenden.
Bei data.table geht das auch ganz flockig. Das ist der Vorteil, wenn man alle nichttrivialen nützlichen Funktionen unter ein gemeinsames Konzept stellt (wie auch bei tidyverse, womit ich mich noch beschäftigen muss).
Demütig,
nun hör aber auf damit. :oops:

Viele Grüße, Jörg

Antworten