2016-12-23 7 views
1

複数の参加者のすべてのデータを持つデータセットがあります。データクリーンアップの一環として、参加者全員がベースラインのデータ収集セッション番号を負にする必要があります。それを少し複雑にするために、各参加者は4つまたは5つのベースラインデータ収集を完了した。件名IDに基づいてデータをグループ化して、最大値を取得し、各被験者データポイントの値を引きます。

基本的に私は各参加者の最大セッション番号を1に追加し、各参加者セッション番号からそれを減算する必要があります。以下は、私が得ているか離れているが、私は他の人が5 Iを持っていながら、あなたには、いくつかのユーザーは4つのセッションの合計を持って、各ユーザーおよびセッションのその数を見ることができ、データの個別の実行の最終段階

data_tibble  
A tibble: 49,657 × 54  
    SID  Session 
1 User1 1 
    100s of rows for Session 1 
2 User1 2 
    … 
    100 rows for each Session for each User 

をしないのです各ユーザの最大セッション数を1とし、data_tibble内の各データポイントから減算したいと考えています。

distinct(data_tibble, SID, Session)  
    SID Session 
    <chr> <int> 
1 User1 1 
2 User1 2 
3 User1 3 
4 User1 4 
5 User1 5 
6 User2 1 
7 User2 2 
8 User2 3 
9 User2 4 
10 User3 1 
# ... with 38 more rows  

私はSIDをgroup_byして各グループの最大セッション数を取得する必要があると考えました。これは私に、各SIDの最大セッション値を与えるが、今、私は

group <- group_by(data_tibble, SID) 
distinct(group, max(Session))  
    `max(Session)` SID 
    <int> <chr> 
1 5 User1 
2 4 User2 
3 4 User3 
4 4 User4 
5 4 User5 
6 4 User6 
7 4 User7 
8 5 User8 
9 5 User9 
10 5 User10 
11 9 User11 
+0

最小限の再現可能な例を提供する - データセットの数行を入力するか、元のデータセットを模倣するサンプルデータセットを作成してください。 – jesstme

答えて

3

は、私が思うSIDに基づいて(セッションを)私の元の49K data_tibbleに戻って最大を減算する方法がわからないだろう、次のあなたは何をしています。私はdistinct(data_tibble, SID, Session)に基づいてデータフレームを作成し、それをmydfと呼んだ。グループを定義した後、最大数Sessionを検索しました。私はその番号に1を加え、そこから各セッション番号を差し引いた。

mydf %>% 
group_by(SID) %>% 
mutate(maximum = max(Session), 
     subtraction = maximum + 1 - Session) 

#  SID Session maximum subtraction 
# <fctr> <int> <int> <dbl> 
#1 User1  1  5  5 
#2 User1  2  5  4 
#3 User1  3  5  3 
#4 User1  4  5  2 
#5 User1  5  5  1 
#6 User2  1  4  4 
#7 User2  2  4  3 
#8 User2  3  4  2 
#9 User2  4  4  1 
+0

ありがとうございます。私は1月3日に私がオフィスに戻ってきたときにそれを試してみよう。 – Doc

+0

私はそれが熱くなったことを教えてください。 – jazzurro

+0

私はオフィスに戻ってくるまで待つことができなかったので、データのサンプルセットで試してみました。私は必要とされていたmutateを使って情報を配管することを考えていませんでした。 – Doc

関連する問題