2017-05-24 6 views
0

Ich bin neu in „R“, ich Zeilen in Spalten konvertieren müssen Quelle wird in Datenrahmen gespeichertR konvertieren Zeilen in Spalten

Was ich bin in der Lage

destination<- as.data.frame.matrix(xtabs(~order_id+dish_id, source))

zu tun aber, ich nicht in der Lage zu bekommen, was ich gewünscht, kann mir also any1 helfen Daten zu erhalten, wie in Ziel

Quelle: -

order_id primary_dish dish_id category_id 
328507  38118   38114 1536 
328523  38081   38068 1829 
328523  38094   38068 1829 

(Quelldaten schaut oben Format in)

Reiseziel: -

order_id primary_dish 38114 38068 1536 1829 
328507  38118   1  0  1  0 
328523  38081   0  1  0  1 
328523  38094   0  1  0  1 
+0

Möchten Sie transponieren? Wenn ja, versuchen Sie es mit t (Dataframe) – user2510479

+0

Mögliches Duplikat von [Wie umformatieren Sie Daten vom Long- in das Wide-Format?] (Https://stackoverflow.com/questions/5890584/how-to-reshape-data-from-long-to -wide-format) – jogo

+0

Um diesen "long-to-wide" link @jogo zu verwenden, müssen Sie zuerst von "wide-to-long" gehen und "category_id" und "dish_id" effektiv in ein " einzelne Spalte. Dann können Sie ganz einfach von "long-to-wide" konvertieren, wie bereits vorgeschlagen. – r2evans

Antwort

0

Soetwas Sie die gewünschte Ausgabe erhalten arbeiten kann.

library (dplyr) 
library (tidyr) 
destination <- destination %>% 
    mutate (dval = 1) %>% 
    spread (key = dish_id, value = dval, fill = 0) %>% 
    mutate (cval = 1) %>% 
    spread (key = category_id, value = cval, fill = 0) %>% 
    arrange (order_id, primary_dish) 
+0

Vielen Dank Dies ist, was ich gesucht habe – ankitkhanduri