2017-05-24 59 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