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 »

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: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datenmanagement

Beitrag von EDi »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo »

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: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Datenmanagement

Beitrag von student »

Hallo Rubilu,

zum long-wide-Format habe ich auch noch etwas!
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Datenmanagement

Beitrag von consuli »

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
Irmgard.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo »

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: 162
Registriert: Fr Aug 31, 2018 6:34 pm

Re: Datenmanagement

Beitrag von Hufeisen »

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: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Datenmanagement

Beitrag von consuli »

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?
Irmgard.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datenmanagement

Beitrag von jogo »

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