2017-05-04 3 views
1

Ich habe nicht in der Lage gewesen, eine Lösung für dieses Problem so weit zu finden ... Dieser kamen in der Nähe: 1Populate mehr Spalten von Werten in einer Spalte

Hier ist eine kleine Teilmenge meines Datenrahmen, df:

ANIMAL(chr) MARKER(int) GENOTYPE(int) 
"1012828"  1550978  0 
"1012828"  1550982  2 
"1012828"  1550985  1 
"1012830"  1550982  0 
"1012830"  1550985  2 
"1012830"  1550989  2 

Und was ich will, ist dies ...

ANIMAL  MARKER_1550978 MARKER_1550982 MARKER_1550985 MARKER_1550989 
"1012828"  0     2     1     NA 
"1012830"  NA    0     2     2 

Mein Gedanke war zunächst Spalten für jeden Marker erstellen nach der referenzierten Frage

markers <- unique(df$MARKER) 
df[,markers] <- NA 

da ich keine ganzen Zahlen für Spaltennamen in R. habe, kann ich „MARKER_“ auf jede neue Spalte hinzugefügt, so dass es funktionieren würde:

df$MARKER <- paste("MARKER_",df$MARKER) markers <- unique(df$MARKER) df[,markers] <- NA

Jetzt all meine neue Spalten ich habe, aber mit der gleichen Anzahl von Zeilen. Ich werde kein Problem damit haben, unnötige Zeilen und Spalten loszuwerden, aber wie würde ich meine neuen Spalten korrekt mit ihrem korrekten GENOTYPE von MARKER und ANIMAL füllen? Ich rate ein oder mehrere davon: Indexierung, Übereinstimmung,% in% ... aber ich weiß nicht, wo ich anfangen soll. Die Suche nach diesen im Stackoverflow ergab nichts, was meiner Herausforderung angemessen schien.

+2

Sie möchten Ihre Datenrahmen von schmal bis breit verbreiten. Check out 'tidyr :: spread' – yeedle

+1

speziell' tidyr :: verbreiten (df, MARKER, GENOTYPE) ' – MrFlick

Antwort

1

Was Sie fragen, ist eine sehr häufige Datenübertragungsoperation, die allgemein als "Spreizen" oder "Verbreitern" bezeichnet wird. Die Umkehrung dieser Operation ist "Sammeln". Schauen Sie sich diese an, speziell den Teil zum Umformen von Daten.


library(tidyr) 

df %>% spread(MARKER, GENOTYPE) 
#> ANIMAL 1550978 1550982 1550985 1550989 
#> 1 1012828  0  2  1  NA 
#> 2 1012830  NA  0  2  2 
+0

Vielen Dank, funktioniert wunderbar! –

Verwandte Themen