Von dataframe zu list und wiederzurück

Allgemeine Fragen zur Programmierung mit R.

Von dataframe zu list und wiederzurück

Beitragvon lumifex » Mi 15. Aug 2018, 12:03

Hallo,

ich habe noch nicht lange mit R zu tun und habe leider weder hier noch sonst irgendwo eine Antwort gefunden.
Ich würde gerne einen dataframe zu einer Liste machen, damit ich eine Funktion nutzen kann. Ich muss mit relativ vielen Datensätzen arbeiten, die das gleiche durchlaufen müssen. Dafür würde ich lapply nutzen.
Mein Problem ist, dass ich danach die Daten wieder als dataframe bräuchte.. Ich habe aber keine Idee, wie das gehen soll. Ich habe ein bisschen rumprobiert, aber nichts klappt..

Kann mir da ewr helfen?

LG
lumifex
 
Beiträge: 9
Registriert: Di 14. Aug 2018, 15:43
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon jogo » Mi 15. Aug 2018, 12:55

Hallo lumifex,

lumifex hat geschrieben:ich habe noch nicht lange mit R zu tun und habe leider weder hier noch sonst irgendwo eine Antwort gefunden.
Ich würde gerne einen dataframe zu einer Liste machen, damit ich eine Funktion nutzen kann.

ein Dataframe ist eine spezielle Liste.
Code: Alles auswählen
is.list(iris)
lapply(iris[-5], mean)


Ich muss mit relativ vielen Datensätzen arbeiten, die das gleiche durchlaufen müssen. Dafür würde ich lapply nutzen.
Mein Problem ist, dass ich danach die Daten wieder als dataframe bräuchte.. Ich habe aber keine Idee, wie das gehen soll. Ich habe ein bisschen rumprobiert, aber nichts klappt..
um hier konkret zu helfen, werden Informationen über die Struktur der Daten benötigt. Wenn eine Liste nur aus gleichlangen Vektoren besteht, kann man die Funktion as.data.frame() verwenden.

Gruß, Jörg

LG
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon lumifex » Mi 15. Aug 2018, 14:15

Hallo Jörg,

wie ich eine Liste mache, weiß ich.
Das sind immer die gleichen Daten. Alle Daten bestehen ursprünglich aus 9 Spalten und 672 Reihen. Es sind sowohl characters, factors und integer.
Also ich würde gerne wieder zum Beispiel [[1]] wieder als einzelnen Data.frame haben, da sonst einige Funktionen nicht funktionieren, zumindest laut der error Meldung.

LG
lumifex
 
Beiträge: 9
Registriert: Di 14. Aug 2018, 15:43
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon jogo » Mi 15. Aug 2018, 14:22

Hallo lumifex,

mit um hier konkret zu helfen, werden Informationen über die Struktur der Daten benötigt. meinte ich Daten oder wenigstens den Output von str(...) im Sinne von
http://forum.r-statistik.de/viewtopic.php?f=20&t=11 oder
https://stackoverflow.com/questions/596 ... le-example

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon lumifex » Mi 15. Aug 2018, 14:30

das wäre das Output von der Liste

str(VP02_lsd)
'data.frame': 672 obs. of 11 variables:
$ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
$ V2 : int 1 2 3 4 5 6 7 8 9 10 ...
$ V3 : int 9 9 9 9 9 9 9 9 9 9 ...
$ Zieltier : chr "h" "d" "c" "h" ...
$ l.aussen : chr "g" "h" "s" "d" ...
$ l.innen : chr "s" "f" "h" "b" ...
$ r.innen : chr "c" "b" "s" "a" ...
$ r.aussen : chr "s" "d" "c" "e" ...
$ Antw.Taste: chr "" "T3" "T3" "" ...
$ RT : chr "" "2803" "2757" "" ...
$ Fehler : num 1 1 1 1 1 1 1 1 1 1 ...
> str(lsd)
List of 2
$ :'data.frame': 672 obs. of 9 variables:
..$ V1 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V2 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V3 : int [1:672] 9 9 9 9 9 9 9 9 9 9 ...
..$ V7 : Factor w/ 237 levels "zaab","zaac",..: 171 100 7 144 70 171 207 188 69 194 ...
..$ V8 : Factor w/ 68 levels "absi","acsi",..: 66 25 51 61 67 66 56 49 7 30 ...
..$ V15: Factor w/ 2 levels "","T3": 2 2 1 1 1 2 2 2 1 1 ...
..$ V16: Factor w/ 2 levels "","R": 1 1 2 2 1 1 1 1 1 2 ...
..$ V38: chr [1:672] "2716" "2888" "" "" ...
..$ V39: chr [1:672] "" "" "3244" "2754" ...
$ :'data.frame': 672 obs. of 9 variables:
..$ V1 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V2 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V3 : int [1:672] 9 9 9 9 9 9 9 9 9 9 ...
..$ V7 : Factor w/ 237 levels "zaab","zaac",..: 228 108 85 217 38 16 80 94 24 107 ...
..$ V8 : Factor w/ 68 levels "absi","acsi",..: 23 11 63 4 48 59 23 54 63 51 ...
..$ V15: Factor w/ 2 levels "","T3": 1 2 2 1 2 1 2 1 1 1 ...
..$ V16: Factor w/ 2 levels "","R": 1 1 1 1 1 1 1 1 2 1 ...
..$ V38: chr [1:672] "" "2803" "2757" "" ...
..$ V39: chr [1:672] "" "" "" "" ...
lumifex
 
Beiträge: 9
Registriert: Di 14. Aug 2018, 15:43
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon jogo » Mi 15. Aug 2018, 15:22

lumifex hat geschrieben:das wäre das Output von der Liste

str(VP02_lsd)
'data.frame': 672 obs. of 11 variables:
$ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
..
$ Antw.Taste: chr "" "T3" "T3" "" ...
$ RT : chr "" "2803" "2757" "" ...
$ Fehler : num 1 1 1 1 1 1 1 1 1 1 ...
ok, das sieht aus wie der Dataframe bei der Berechnung von ..$FQ <- apply(...)
... und ähnlich wie die Dataframes, die Elemente in der Liste lsd sind.

> str(lsd)
List of 2
$ :'data.frame': 672 obs. of 9 variables:
..$ V1 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V2 : int [1:672] 1 2 3 4 5 6 7 8 9 10 ...
..$ V3 : int [1:672] 9 9 9 9 9 9 9 9 9 9 ...
..$ V7 : Factor w/ 237 levels "zaab","zaac",..: 171 100 7 144 70 171 207 188 69 194 ...

hier muss man bezüglich der Faktoren aufpassen, dass man sie zu character konvertiert. Ansonnsten kann man lapply() über diese Liste laufen lassen und auf jedem Dataframe rumwirtschaften, z.B. auch die Spalte $FQ anlegen. Wichtig für die Funktion, die einen einzelnen Dataframe bearbeitet: sie muss als Ergebnis den gesamten Dataframe zurückliefern.
Insgesamt kann das so aussehen:
Code: Alles auswählen
tuWas <- function(Li) {
  ## Faktor-Spalten in character konvertieren
  Li$FQ <- apply(Li, 1, AuWM2_lsd)
  Li  ### !!! oder return(Li)
}
Lneu <- lapply(lsd, tuWas)

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Von dataframe zu list und wiederzurück

Beitragvon lumifex » Mi 15. Aug 2018, 15:39

Ok, danke. Ich versuche mal mein Glück :)
lumifex
 
Beiträge: 9
Registriert: Di 14. Aug 2018, 15:43
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron