2017-05-24 68 views
0

我是新來的「R」, 我需要行轉換爲 源保存在數據幀列[R轉換行到列

什麼我能做

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

但是,我無法得到我想要的 這樣可以ANY1幫助我得到這樣的目標

源數據: -

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

(來源數據看起來上面的格式)

目的地: -

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

你們是不是要轉?如果是,嘗試T(數據幀)的 – user2510479

+0

可能的複製[如何從長重塑數據寬幅?](https://stackoverflow.com/questions/5890584/how-to-reshape-data-from-long-to - 寬格式) – jogo

+0

爲了使用「長到寬」提供的鏈接@jogo,你要首先從「寬到長」走出去,有效地dish_id'結合'category_id'和'成單列。然後你就可以輕鬆地從「長到寬」作爲已經建議轉換。 – r2evans

回答

0

像這樣的東西可能工作讓你所需的輸出。

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

非常感謝 這就是我一直在尋找 – ankitkhanduri