Umgruppierung einer Tabelle

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Umgruppierung einer Tabelle

Beitrag von wbart »

Hallo,

ich habe eine Tabelle mit folgender Form:

Code: Alles auswählen

Sammlung.longform
# A tibble: 2,016 x 6
   Gruppe Geschlecht Proband Gen   Tag   Ausgangslagendifferenzen
 * <chr>  <chr>      <chr>   <chr> <chr> <chr>                   
 1 A      m          1       KI67  d1    -0.159                  
 2 A      m          2       KI67  d1    -0.104                  
 3 A      m          9       KI67  d1    0.156                   
 4 A      m          10      KI67  d1    -0.334                  
 5 A      m          13      KI67  d1    0.071                   
 6 A      m          14      KI67  d1    0.107                   
 7 A      m          20      KI67  d1    0.223                   
 8 A      m          21      KI67  d1    -0.187                  
 9 A      m          22      KI67  d1    -0.0720000000000001     
10 A      w          3       KI67  d1    0.253                   
# ... with 2,006 more rows	
Ich möchte aus der Spalte Proband und der Spalte Ausganslagendifferenzen (AGD) eine neue Tabelle machen. Für jeden Probanden (gekennzeichnet durch ein Nummer z.B. 1,2,9) gibt es mehrere AGD- Werte. Am Ende möchte unter jedem Proband alle AGD aufgelistet haben.

Ich hoffe ich konnte mich verständlich machen.

Hat jemand einen Vorschlag?
ronchen

Re: Umgruppierung einer Tabelle

Beitrag von ronchen »

Hallo,

wenn du die gleiche Anzahl an Messungen für jeden Probanden hast könntest du für jeden Probanden eine neu Spalte Messungen erstellen mit Messung1, Messung2 usw. und dann mit dem reshape Paket arbeiten siehe Beispiel:

Code: Alles auswählen

x<-data.frame(a=(c(1,2,1,2,1,2,1,2,1,2)),
              b=(c(0.5,0.6,0.8,0.123,0.8,0.5,0.6,0,0.5,0.9)))
x
Output:
   a     b
1  1 0.500
2  2 0.600
3  1 0.800
4  2 0.123
5  1 0.800
6  2 0.500
7  1 0.600
8  2 0.000
9  1 0.500
10 2 0.900

#Spalte anfügen mit den einzelnen Messungen für die Probanden, bei vielen Probanden aber sicherlich umständlich
x$id<-c("Messung1","Messung1","Messung2","Messung2","Messung3","Messung3","Messung4","Messung4","Messung5","Messung5")
   
 library(reshape)
 recast(x,id~variable+a,id.var=c("id","a"))    
 
 Output:   
         id b_1   b_2
1 Messung1 0.5 0.600
2 Messung2 0.8 0.123
3 Messung3 0.8 0.500
4 Messung4 0.6 0.000
5 Messung5 0.5 0.900

VG
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Umgruppierung einer Tabelle

Beitrag von wbart »

Hallo ronchen,

leider habe ich nicht dieselbe Anzahl von Messungen

VG
wbart
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Umgruppierung einer Tabelle

Beitrag von bigben »

Hallo wbart,

bitte gib uns ein paar Beispieldaten, anhand derer wir Lösungsvorschläge ausprobieren und vorstellen können. Bis Du darauf dann Antwort bekommst, schau Dir schon mal die Funktionen tapply und aggregate an. Vielleicht würde es auch reichen, das ganze Tibble nach Proband zu sortieren? Dann stünden die AGLs auch alle beieinander.

LG,
Bernhard

bsp <- data.frame(id = c(1,1,1,2,3,3,3,3,4), agl = runif(9))
tapply(bsp$agl, bsp$id, c)
for(i in unique(bsp$id)){ print(i); print(bsp[bsp$id == i,])}
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten