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

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

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von jogo »

Hallo Jeff,
Jeffgo hat geschrieben: Do Feb 20, 2020 2:21 pm 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?
wenn Dir Bernhard schon ein reproduzierbares Beispiel liefert, dann solltest Du den Code auch ausführen
... dann dürfte die Frage auch geklärt sein.

Ansonsten kann auch ich noch ein Beispiel liefern:

Code: Alles auswählen

BOD
BOD[rep(1:nrow(BOD), BOD$Time),]
Gruß, Jörg
bigben
Beiträge: 2771
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 2:21 pmDer 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?
Ich bin nicht sicher, ob ich die Frage verstehe. Wenn Du in R einen Datensatz mit einer Spalte Freq hast, dann weiß R, was in dieser Spalte steht. Sowohl Athomas' als auch mein Code-Beispiel nehmen sich die nötigen Zahlen aus einer Spalte im Datensatz.
Nehmen wir meinen Code oben: Die ersten beiden Zeilen dienen dazu, einen Datensatz mit dem Namen bsp zu erzeugen, weil Du keinen entsprechenden Code geliefert hast. Siehst Du nach diesen beiden Zeilen, in denen bsp erzeugt wird irgendwo noch durch Kommas getrennte Häufigkeiten? Nein, Du siehst nur, dass in der Zeile die mit "bsp2 <-" beginnt auf die Spalte bsp$freq Bezug genommen wird. So kommen die Häufigkeiten aus dem Datensatz in die Vervielfältigungsmaschine. Eine Vervielfältigungsmaschine die aus eckigen Klammern und dem Befehl rep zusammengesetzt wurde.

HTH,
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 Bernhard,

danke ich habe deine Befehle ausgeführt und das ist mein R-Output:

Code: Alles auswählen

> bsp2 <- bsp[rep(1:nrow(bsp), bsp$freq),]
> print(bsp2)
     freq  a b c
1      20  1 A a
1.1    20  1 A a
1.2    20  1 A a
1.3    20  1 A a
1.4    20  1 A a
1.5    20  1 A a
1.6    20  1 A a
1.7    20  1 A a
1.8    20  1 A a
1.9    20  1 A a
1.10   20  1 A a
1.11   20  1 A a
1.12   20  1 A a
1.13   20  1 A a
1.14   20  1 A a
1.15   20  1 A a
1.16   20  1 A a
1.17   20  1 A a
1.18   20  1 A a
1.19   20  1 A a
21      1 21 U u
22      1 22 V v
23      1 23 W w
24      1 24 X x
25      2 25 Y y
25.1    2 25 Y y
26      5 26 Z z
26.1    5 26 Z z
26.2    5 26 Z z
26.3    5 26 Z z
26.4    5 26 Z z
Wie kann ich darauf eine Tabelle erzeugen, die so aussieht und deren Zeilen mit 1,2,3,4,5,6.. nummiert sind?

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
Ich entschuldige mich für mein Unverständnis.

Gruß
Jeff
Zuletzt geändert von jogo am Do Feb 20, 2020 3:06 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von bigben »

@schubbiaschwilli : Ich sehe, was Du machen willst und auch wenn das nicht immer klappen wird wird es doch häufig der bessere Weg sein. Für einen Chiquadrattest, ob die Methode vom Geschlecht abhängig ist ist es bestimmt der bessere Weg. Folgenden Aspekt hast Du aber m. E. noch nicht beantwortet:
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.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von jogo »

Hallo Jeff,
Jeffgo hat geschrieben: Do Feb 20, 2020 3:05 pm Wie kann ich darauf eine Tabelle erzeugen, die so aussieht und deren Zeilen mit 1,2,3,4,5,6.. nummiert sind?
einfach die Zeilennamen löschen - dann werden die Standardnamen angenommen (d.h. die Zeilen einfach durchnummeriert):

Code: Alles auswählen

BOD
B2 <- BOD[rep(1:nrow(BOD), BOD$Time),]
B2
rownames(B2) <- NULL
B2
Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von bigben »

@Jeffgo

Na, der erste Schritt, meinen Code auf Deinen anzuwenden könnte so aussehen:

Ausgangspunkt:

Code: Alles auswählen

bsp2 <- bsp[rep(1:nrow(bsp), bsp$freq),]
übersetzt mit Deinen Bezeichnern:

Code: Alles auswählen

lang <- [rep(1:nrow(Dataset_Suicide_Rates_in_Germany), Dataset_Suicide_Rates_in_Germany$Freq),]
Kann ich hier natürlich nicht ausprobieren, da ich ja Deine Daten nicht habe. Kommt denn da bei

Code: Alles auswählen

head(lang, 20)
was vernünftiges bei raus?

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 »

bigben hat geschrieben: Do Feb 20, 2020 3:11 pm @Jeffgo

Na, der erste Schritt, meinen Code auf Deinen anzuwenden könnte so aussehen:

Ausgangspunkt:

Code: Alles auswählen

bsp2 <- bsp[rep(1:nrow(bsp), bsp$freq),]
übersetzt mit Deinen Bezeichnern:

Code: Alles auswählen

lang <- [rep(1:nrow(Dataset_Suicide_Rates_in_Germany), Dataset_Suicide_Rates_in_Germany$Freq),]
Kann ich hier natürlich nicht ausprobieren, da ich ja Deine Daten nicht habe. Kommt denn da bei

Code: Alles auswählen

head(lang, 20)
was vernünftiges bei raus?

LG,
Bernhard
Hallo Bernhard,

1000-Dank. Ich habe meine Daten in den Code eingetragen und es kommt folgendes Ergebnis raus:

Code: Alles auswählen

> DSRiG_neu <- Dataset_Suicide_Rates_in_Germany[rep(1:nrow(Dataset_Suicide_Rates_in_Germany), Dataset_Suicide_Rates_in_Germany$Freq),]
> rownames(DSRiG_neu) <- NULL
> DSRiG_neu
# A tibble: 53,182 x 5
    Freq sex   method   age age.group
   <dbl> <chr> <chr>  <dbl> <chr>    
 1     4 male  poison    10 10-20    
 2     4 male  poison    10 10-20    
 3     4 male  poison    10 10-20    
 4     4 male  poison    10 10-20    
 5   247 male  hang      10 10-20    
 6   247 male  hang      10 10-20    
 7   247 male  hang      10 10-20    
 8   247 male  hang      10 10-20    
 9   247 male  hang      10 10-20    
10   247 male  hang      10 10-20    
# ... with 53,172 more rows
> 
> # Datensatz um nicht relevante Spalten und Variablen bereinigen
> 
> DSRiG_neu$Freq <- NULL
> DSRiG_neu
# A tibble: 53,182 x 4
   sex   method   age age.group
   <chr> <chr>  <dbl> <chr>    
 1 male  poison    10 10-20    
 2 male  poison    10 10-20    
 3 male  poison    10 10-20    
 4 male  poison    10 10-20    
 5 male  hang      10 10-20    
 6 male  hang      10 10-20    
 7 male  hang      10 10-20    
 8 male  hang      10 10-20    
 9 male  hang      10 10-20    
10 male  hang      10 10-20    
# ... with 53,172 more rows
> View(DSRiG_neu)
Im Dataframe sind nun 53172 Zeilen statt 53182. D.h. 100 Zeilen des Ursprunglüchen Datensatzes waren mit der Häufigkeit 0 oder habe ich einen Denkfehler?

Oben im R-Input bekomme leuchetet ein rotes X neben den Befehlen auf und ich bekomme den Hinweis: "expectet "," after expression"
Muss ich noch etwas anpassen?

Danke & lieben Gruß
Jeff
Zuletzt geändert von jogo am Do Feb 20, 2020 3:44 pm, insgesamt 2-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von schubbiaschwilli »

Gude!
bigben hat geschrieben: Do Feb 20, 2020 3:06 pm @schubbiaschwilli : Ich sehe, was Du machen willst und auch wenn das nicht immer klappen wird wird es doch häufig der bessere Weg sein. Für einen Chiquadrattest, ob die Methode vom Geschlecht abhängig ist ist es bestimmt der bessere Weg. Folgenden Aspekt hast Du aber m. E. noch nicht beantwortet:
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.
Je nach Kombination der Ausprägungen, muss ich die Summen bilden, ja - und?

Dank&Gruß
schubbiaschwilli
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von jogo »

Jeffgo hat geschrieben: Do Feb 20, 2020 3:41 pm Im Dataframe sind nun 53172 Zeilen statt 53182. D.h. 100 Zeilen des Ursprunglüchen Datensatzes waren mit der Häufigkeit 0 oder habe ich einen Denkfehler?
Da hast Du einen Denkfehler.
Die Anzahl der Datensätze, bei denen Freq den Wert 0 hat, bekommst Du mit

Code: Alles auswählen

sum(Dataset_Suicide_Rates_in_Germany$Freq==0)
In Deinem Output ist die Differenz 10. Bitte richtig lesen: 10 Zeilen werden angezeigt und dann steht dort 53172 more rows (... not shown)

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe

Beitrag von bigben »

@Schubbiaschwilli
schubbiaschwilli hat geschrieben: Do Feb 20, 2020 3:46 pmJe nach Kombination der Ausprägungen, muss ich die Summen bilden, ja - und?
Und? Ich mag falsch liegen, aber ich traue das dem OP nicht zu. Du?

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