2017-02-17 2 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 

私はkey変数がsummarise他、その後

+0

'df%>% group_by(key)%>% summary(x = toString(x)、y = toString(y))'?または単に 'df%>% group_by(キー)%>% summarise_all(toString)'? – Abdou

答えて

0

group_byを試してみました変数は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

お返事ありがとうございます。ソリューションのsummarize()およびsummarise_all()バージョンのデモンストレーションをお待ちしております。 – heitsmith

関連する問題