2017-09-13 11 views
2

サンプルデータセットがあります。私の目的は、user_idplan_idが複数回出現する記録を残すことです。私はあなたが複数の変数で複数回発生するレコードをフィルタリングする

n_occur <- data.frame(table(test$user_id)) 

でカラム内の変数の頻度をカウントすることができますしかし、どの1が複数回発生するもので、元のデータセットをフィルタリングする2列に変数の頻度をカウントし、その後だろうと理解できますか?例えば は、ここに私のテストデータセットです:

> output 
    user_id plan_id hour 
1  1  10 2 
2  5  10 8 
3  1  10 10 
4  1  20 5 
5  1  20 8 
6  5  10 17 

とデータ:

> dput(test) 
structure(list(user_id = c(1, 2, 3, 4, 5, 1, 5, 1, 1, 5, 1), 
    plan_id = c(10, 10, 20, 20, 10, 10, 20, 20, 20, 10, 30), 
    hour = c(2, 4, 23, 12, 8, 10, 6, 5, 18, 7, 6)), .Names = c("user_id", 
"plan_id", "hour"), row.names = c(NA, 11L), class = "data.frame") 

任意の提案をいただければ幸いです

> test 
    user_id plan_id hour 
1  1  10 2 
2  2  10 4 
3  3  20 23 
4  4  20 12 
5  5  10 8 
6  1  10 10 
7  5  20 6 
8  1  20 5 
9  1  20 18 
10  5  10 7 
11  1  30 6 

そして、ここでは意図された出力です!

+0

これはベースRソリューションを提供するため、これは重複しません –

答えて

3

idの列を先頭から最後までチェックすることができます。いずれかがTRUEになると、行が複数回表示されます。返された論理ベクトルを使用して、データフレームをサブセット化することができます。

ids <- df[c('user_id', 'plan_id')] 
df[duplicated(ids) | duplicated(ids, fromLast = TRUE),] 

# user_id plan_id hour 
#1  1  10 2 
#5  5  10 8 
#6  1  10 10 
#8  1  20 5 
#9  1  20 18 
#10  5  10 7 
関連する問題