2016-07-20 37 views
0

我看起來像這樣的一個數據幀組織中的R數據報:如何通過一列

Quality  Data  Name 
    1   667  white 
    2   647  white 
    3   626  white 
    1   345  Blue 
    2   550  Blue 
    3   730  Blue 
    1   500  red 
    2     red 
    3   123  red 

我怎樣才能使它的方式合併,其同品質:

Quality  Data  Name  Data Name Data Name 
    1   667  white  345  Blue 500  red 
    2   647  white  550  Blue NULL red 
    3   626  white  730  Blue 123  red 
+1

您知道重複列名會導致提取含糊不清嗎?如果沒有問題,那麼試試這個表達式,其中'df1'是數據集名'setNames(do.call(「cbind」,c(list(unique(df1 $ Quality)),split(df1 [-1] df1 $ Name))),c(names(df1)[1],rep(names(df1)[ - 1],length(unique(df1 $ Name)))))' –

+0

我想這樣做:http ://stackoverflow.com/questions/38470111/how-to-graph-with-geom-ribbon 但沒有人可以回答那一個果醬試圖找到一種方法來做到這一點 – Arya

+0

我希望你會有鏈接你從前一個問題。這項工作不會得到您的解決方案。我們現在創建了一個數據框,但結構已經被破壞了。我們有多個列中的顏色,多列中的值。 –

回答

1

我們可以分開這個以獲得更多解釋,但表達的核心是split(df1[-1], df1$Name)。這會將數據拆分爲Name列。其餘的用於外觀:

setNames(do.call("cbind", c(list(unique(df1$Quality)), (s<-split(df1[-1], df1$Name))[match(unique(df1$Name),names(s))])),c(names(df1)[1],rep(names(df1)[-1], length(unique(df1$Name))))) 
# Quality Data Name Data Name Data Name 
#4  1 345 Blue 500 red 667 white 
#5  2 550 Blue NULL red 647 white 
#6  3 730 Blue 123 red 626 white