2017-08-03 11 views
2

で別の変数でグループ化された変数のすべての値のリストを作成します。このように、私は2つの変数を含むデータフレームを持つR

df <- data.frame(group=c(1,1,1,2,2,3,3,4), 
        type=c("a","b","a", "b", "c", "c","b","a")) 

> df 
    group type 
1  1 a 
2  1 b 
3  1 a 
4  2 b 
5  2 c 
6  3 c 
7  3 b 
8  4 a 

私はグループごとに組み合わせを示す表を作成したいです1つの変数としてデータフレームにある型の例

group alltypes 
1  1  a, b 
2  2  b, c 
3  3  b, c 
4  4  a 

出力は常に同じ順序でタイプをリストし(例えば、グループ2及び3は、同じ結果を得る)およびNO繰り返し(例えば、グループ1「は、B、A」ではないではない)が存在することになるであろう。

が、私はこの使用してdplyrと要約をやってみましたが、私はそれがこの二つの条件を満たすように取得する方法を考え出すことはできません - 私が試したコードはでした:私もにタイプを回してみました

> df %>% 
+ group_by(group) %>% 
+ summarise(
+  alltypes = paste(type, collapse=", ") 
+ ) 
# A tibble: 4 × 2 
    group alltypes 
    <dbl> <chr> 
1  1 a, b, a 
2  2  b, c 
3  3  c, b 
4  4  a 

個々のカウントのセットは、実際に有用かどうかは分かりません。

> df %>% 
+ group_by(group, type) %>% 
+ tally %>% 
+ spread(type, n, fill=0) 
Source: local data frame [4 x 4] 
Groups: group [4] 

    group  a  b  c 
* <dbl> <dbl> <dbl> <dbl> 
1  1  2  1  0 
2  2  0  1  1 
3  3  0  1  1 
4  4  1  0  0 

ご意見をいただければ幸いです。

+1

をお使いのペーストコールにソート(ユニーク(タイプ))を追加してください最初の解決策。 – www

+0

今回は問題ではないようですが、将来参照するためにデータセットを作成するコード(私が追加したものなど)を含めてください。誰かがコピーできるように '>'と '+'サンプルコードを貼り付けて実行してください。 –

答えて

1

あなたはとても近いと思います。あなたは次のようにあなたの結果はあなたの条件に準拠して確認することsortunique関数を呼び出すことができます。

df %>% group_by(group) %>% 
summarize(type = paste(sort(unique(type)),collapse=", ")) 

リターン:

# A tibble: 4 x 2 
    group type 
    <int> <chr> 
1  1 a, b 
2  2 b, c 
3  3 b, c 
4  4  a 
関連する問題