Hinzufügen vervielfachter Zeilen in neuen Dataframe

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

Moderatoren: EDi, jogo

Jeffgo
Beiträge: 11
Registriert: Do Feb 20, 2020 10:34 am

Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von Jeffgo »

Hallo liebe R-Profis,

ich verzweifle gerade daran einen neuen Dataframe mit vervielfachten Zeilen aus dem Ausgangs-dataframe zu basteln. Ich bin bereits glücklicherweise auf den Beitrag von AlexWue "Hinzuzfügen neuer Zeile zum Dataframe" von 2018 gestoßen, da ich ein ähnliches Problem habe. Leider gibt es jedoch in meinem Fall den Unterschied, dass die Anzahl der vervielfachten Zeilen bei 53182 liegt und hoffe daher auf einen Tipp, damit ich nicht jede einzelne Anzahl pro zu vervielfachenden Zeile in den Befehl schreiben muss. Auf Grund dieses Unterschiedes habe ich ein neues Thema eröffnet, bitte um Verzeihung falls es anders erwünscht ist, da ich nicht nur R-Neuling und sondern auch Forum-Neuling bin.


Der Datensatz hat 306 Zeilen, die vervielfacht sollen. Hier ist ein kurzer Überblick über die ersten 6 Zeilen des Ausgangs-Datensatzes

Ausgangsdatensatz:

Code: Alles auswählen

 > head(Dataset_Suicide_Rates_in_Germany)
 # A tibble: 6 x 5
Freq sex method age age.group
<dbl> <chr> <chr> <dbl> <chr> 
 1 4 male poison 10 10-20 
 2 0 male cookgas 10 10-20 
 3 0 male toxicgas 10 10-20 
 4 247 male hang 10 10-20 
 5 1 male drown 10 10-20 
 6 17 male gun 10 10-20 
Eine Zeile soll so oft vervielfacht werden, wie die Ausprägung "Freq" vorgibt. Z.B. soll die erste Zeile im neuen Datensatz 4 mal untereinander angezeigt werden. Die Variablen sollen dabei gleich bleiben. Eine Zeile mit der Freq "0" soll nicht vervielfacht werden.
Am Ende würde ich gerne die Spalte "Freq" aus dem neuen Datensatz löschen.

Neuer Datensatz:

Code: Alles auswählen

sex method age age.group
<chr> <chr> <dbl> <chr> 
 male poison 10 10-20 
 male poison 10 10-20 
 male poison 10 10-20 
 male poison 10 10-20 
 male hang 10 10-20 
(selbe Zeile noch 246 Mal darunter) usw..


Für einen Tipp und Hilfe jeder Art wäre ich sehr dankbar.
Viele Grüße Jeff
Zuletzt geändert von jogo am Do Feb 20, 2020 2:25 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von Athomas »

Du hattest die Antwort mit meinem Alt-Post von 2018 doch bereits gefunden, warum hast Du die Nachfrage dort nicht stehen lassen?
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von schubbiaschwilli »

Gude!

Im Prinzip suchst du sowas wie expand.grid für einen data.frame - Da findet sich was.
Da du aber schon die Größe 'Häufigkeit' hast, und die meisten Fragen hier in die Richtung gehen, wie man diese berechnet und viele Funktionalitäten von R diese Größe nutzen, würde ich mir eher überlegen, was ich tun will, und dann in der Doku nachlesen, wie die Häufigkeit dort genutzt wird.

Dank&Gruß
schubbiaschwilli
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von bigben »

Hilft das?

Code: Alles auswählen

bsp <- data.frame(freq = c(20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,5),
                  a = 1:26, b = LETTERS, c =letters)
                  
print(bsp)

bsp2 <- bsp[rep(1:nrow(bsp), bsp$freq),]

print(bsp2)
EDIT: Sorry, zu spät gesehen, dass das auch Athomas' Lösung in dem anderen Thread war. Damit den nicht alle suchen müssen: viewtopic.php?t=1121
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Jeffgo
Beiträge: 11
Registriert: Do Feb 20, 2020 10:34 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von Jeffgo »

Hallo schubbiaschwilli,

danke für deine schnelle Antwort. Leider bin ich wirklicher Neuling und verstehe die Parameter im Befehl nicht. :?

Man müsste die Häufigkeiten auch neu berechnen, da es eine Zeile mit den selben Ausprägungen von "sex", "method", "age", "age.group" durchaus häufiger gibt, dann aber mit einer anderen Zahl bei "Freq". Ich denke man müsste die Häufigkeiten dann erst addieren.

Ich muss mit dem Dataframe einige Analysen durchführen. Z.B. ob die Selbstmordmethode mit dem Geschlecht zusammenhängt, daher wollte ich versuchen jeweils einen Selbstmord mit seinen Variablen in einer Zeile darzustellen um dann auf "sex" und "method" zuzugreifen. Ansonsten würde ich sex und method im Hinblick auf die Raten(Zeilen) untersuchen aber nicht auf die Anzahlen der Selbstmorde in den Raten (Freq)

Ich hoffe ich konnte mein Problem etwas besser erklären.

Hallo Athomas,

ich habe ein neues Thema eröffnet, da ich gehofft hatte noch eine andere Lösung für mein Problem zu finden, da ich im Befehl ansonsten 306 Zahlen händsich eintragen müsste um R zu sagen, wie oft welche Zeile vervielfacht werden soll. Zumindest habe ich es so verstanden.
Es war keine böse Absicht dahinter.

Vielen lieben Dank.
Gruß Jeff
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von schubbiaschwilli »

Gude!

"Ich muss mit dem Dataframe einige Analysen durchführen. Z.B. ob die Selbstmordmethode mit dem Geschlecht zusammenhängt (...)"

Ich gehe mal davon aus, dass du die üblichen Verfahren nimmst, also den Chi-Quadrat-Test (siehe https://de.wikipedia.org/wiki/Chi-Quadr ... gkeitstest ) bzw. dann in R als: http://www.r-tutor.com/elementary-stati ... dependence, dann benötigst du genau die Häufigkeiten.

Dank&Gruß
schubbiaschwilli

Nachtrag:
dann aber mit einer anderen Zahl bei "Freq"
Ich tippe, Freq ist die Häufigkeit.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von bigben »

Jeffgo hat geschrieben: Do Feb 20, 2020 1:49 pmich habe ein neues Thema eröffnet, da ich gehofft hatte noch eine andere Lösung für mein Problem zu finden, da ich im Befehl ansonsten 306 Zahlen händsich eintragen müsste um R zu sagen, wie oft welche Zeile vervielfacht werden soll.
Nein, musst Du nicht. In Athomas' Code gibt es eine Spalte "Anzahl" die sagt, wie oft eine Zeile wiederholt werden muss, bei Dir eine, die "Freq" heißt. Das ist strukturell genau gleich. In meinem Beispiel heißt sie "freq" ...

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Jeffgo
Beiträge: 11
Registriert: Do Feb 20, 2020 10:34 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von Jeffgo »

Hallo schubbiaschwilli,

genau, mein Plan war den Chi-Quadrat Test anzuwenden, aber dafür müsste ich doch den Dataframe erstmal wie genannt umändern oder?
Das Eergebnis des test würde sich dann auf die Zeilen, also Raten beziehen und nicht auf die Häufigkeiten in Freq.
Bitte verbessere mich gerne, wenn ich da falsch liege.

Lieben Dank
Gruß Jeff
Jeffgo
Beiträge: 11
Registriert: Do Feb 20, 2020 10:34 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von Jeffgo »

bigben hat geschrieben: Do Feb 20, 2020 2:15 pm
Jeffgo hat geschrieben: Do Feb 20, 2020 1:49 pmich habe ein neues Thema eröffnet, da ich gehofft hatte noch eine andere Lösung für mein Problem zu finden, da ich im Befehl ansonsten 306 Zahlen händsich eintragen müsste um R zu sagen, wie oft welche Zeile vervielfacht werden soll.
Nein, musst Du nicht. In Athomas' Code gibt es eine Spalte "Anzahl" die sagt, wie oft eine Zeile wiederholt werden muss, bei Dir eine, die "Freq" heißt. Das ist strukturell genau gleich. In meinem Beispiel heißt sie "freq" ...

LG,
Bernhard

Hallo Bernhard,

danke dir. Der Dataframe hat 306 Zeilen also 306 verschiedene Anzahlen. Müsste ich diese alle einzeln, durch ein Komma getrennt in den Befehl eintragen oder weiss R selbst wie hoch die Anzahl jeder Zeile in Spalte Freq ist?

Tausend Dank für die tolle Unterstützung hier.
Lieben Gruß
Jeff,
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von schubbiaschwilli »

Gude!

Dann schau dir erst mal den Link zum Thema Chi-Quadrat-Test an (oder diesen hier: https://de.wikibooks.org/wiki/GNU_R:_chisq.test) und probier das Beispiel mal aus - Dann sollte dir klar sein, welche Daten in welcher Form du benötigst.

Dank&Gruß
schubbiaschwilli
Antworten