2017-02-17 97 views
0

我有從關係數據庫導出的大型數據框。我想根據主鍵列返回唯一行,同時組合來自所有其他行的觀察值。我試圖用gather()做到這一點,但目前爲止沒有運氣。原來這裏是數據框的一個簡單的例子:我想回到按鍵列合併數據幀行

library(dplyr) 
key <- c(rep(seq(1:3), 2)) 
x <- c("a", "b", "c", "d", "e", "f") 
y <- rep(c("foo", "bar"), 3) 

df <- data_frame(key, x, y) 


df 

    key  x  y 
    <int> <chr> <chr> 
1  1  a foo 
2  2  b bar 
3  3  c foo 
4  1  d bar 
5  2  e foo 
6  3  f bar 

而且數據框:

df 

    key  x  y 
    <int> <chr> <chr> 
1  1  a, d foo, bar 
2  2  b, e bar, foo 
3  3  c, f foo, bar 

我已經試過

+0

%dl%% group_by(key)%>% summary(x = toString(x),y​​ = toString(y))'?或只是'df%>% group_by(key)%>% summarise_all(toString)'? – Abdou

回答

0

group_bykey變量那麼其他summarise變量爲lists。調用data.frame而不是data_frame將以您指定的格式返回數據而不是列表列。

library(dplyr) 

df %>% 
    group_by(key) %>% 
    summarise(x = list(x), 
      y = list(y)) %>% 
    data.frame() 

    key x  y 
    1 a, d foo, bar 
    2 b, e bar, foo 
    3 c, f foo, bar 

df %>% 
group_by(key) %>% 
summarise_all(list) %>% 
data.frame() 

做同樣的事情,而不指定列名。

+0

謝謝你的回答。感謝您演示解決方案的summary()和summarise_all()版本。 – heitsmith