Seite 2 von 4
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 2:47 pm
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:
Gruß, Jörg
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 2:53 pm
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:05 pm
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:06 pm
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:08 pm
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:11 pm
von bigben
@Jeffgo
Na, der erste Schritt, meinen Code auf Deinen anzuwenden könnte so aussehen:
Ausgangspunkt:
ü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
was vernünftiges bei raus?
LG,
Bernhard
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:41 pm
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:
ü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
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:46 pm
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:48 pm
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
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
Re: Hinzufügen vervielfachter Zeilen in neuen Dataframe
Verfasst: Do Feb 20, 2020 3:54 pm
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