2017-07-25 9 views
1

私は、次のデータがあります。データから重複する列を排除することなく、Rのデータフレームの列のユニークな組み合わせの数を取得し

A B C D  E 
1 130 288 6 80 57299 
2 288 130 6 57299 80 
3 288 130 6 57299 80 
4 288 130 6 57299 80 
5 288 130 6 57299 80 
6 288 130 6 57299 80 
7 288 130 6 57299 80 
8 288 130 6 57299 80 
9 288 130 6 57299 80 
10 130 288 6 80 57299 

が、私はこれらの列のユニークな組み合わせの数を取得し、頻度の列を追加したいが重複する行を削除することなく、既存のデータフレームに追加できます。以下は、私がdf_0 <- count(df, A,B,C,D,E) %>% ungroup()をしようと

A B C D  E  Freq 
1 130 288 6 80 57299 2 
2 288 130 6 57299 80  8 
3 288 130 6 57299 80  8 
4 288 130 6 57299 80  8 
5 288 130 6 57299 80  8 
6 288 130 6 57299 80  8 
7 288 130 6 57299 80  8 
8 288 130 6 57299 80  8 
9 288 130 6 57299 80  8 
10 130 288 6 80 57299 2 

を望むものである重複を排除することによって、私に

A B C D  E  Freq 
1 130 288 6 80 57299 2 
2 288 130 6 57299 80  8 

を与えます。

どうすればよいですか?

+1

Pythonのタグ?どうして? –

+0

Pythonでも対応しようとしているので、このタグを削除しました。ありがとう – Sneha

+0

だから、この時間もPythonが必要ですか?LOL、私はpythonのソリューションを追加します。 – Wen

答えて

3

R dplyrmutate

dat%>%group_by_(.dots=names(dat))%>%dplyr::mutate(Freq=n()) 

Pythonのtransform

df['Freq']=df.groupby(list(df))['A'].transform('count') 
+0

私はRを知らないが、これは空想的だ。 +1 –

+0

@cᴏʟᴅsᴘᴇᴇᴅありがとうございました〜 – Wen

+0

@Sneha、以前に質問したようにRとPythonの両方のソリューションを追加してください – Wen

2

あなたがadd_countをしたいように見えます:

df_0 <- add_count(df, A,B,C,D,E) 

?countのヘルプページから:

add_tally()テーブルに列「n」を追加した項目の数に基づいて、既存の各以内グループであり、add_count()はグループ化も行うショートカットです。これらの関数はtally()count()になり、mutate()summarise()になります。各グループを折りたたむのではなく、追加の列を追加します。

+0

両方のソリューションが完璧に機能しました。感謝温とグレゴール。残念ながら私は1つの答えしか受け入れることができません。 – Sneha

関連する問題