2017-04-07 6 views
-2

私は、日付、user_id、歩数、心拍数を含むデータを持っています。2つのベクトルに基づいてdplyr mutate(2列からのグループ化に基づいて3番目の列を計算)

私はdplyrmutateを使用して、1日あたりの平均心拍数がuser_idになるようにしています。 1人のユーザーに1人の心拍数に対する複数の記録があります。 (注:私はB/C私はこのような「手順」などの他の列のための情報を保持する列を追加しています)データサンプル

df7 <- data.frame( date=c('2016-11-01','2016-11-01','2016-11-01','2016-11-01','2016-11-02','2016-11-02','2016-11-02','2016-11-02'), 
       users_user_id=c(6,6,7,7,6,6,7,7), 
       steps=c(500,2000,500,2000,600,3000,600,3000), 
       avg_heart_rate=c(70,80,70,80,80,90,80,90)) 
df7$date <- as.Date(df7$date) 

を生成する

コード理想的には、この

のようになります。
date  users_user_id steps average_heart_rate day_avg_hr 
2016-11-01 6    500  70     75 
2016-11-01 6    2000 80     75 
2016-11-01 7    500  70     75 
2016-11-01 7    2000 80     75 
2016-11-02 6    600  80     85 
2016-11-02 6    3000 90     85 
2016-11-02 7    600  80     85 
2016-11-02 7    3000 90     85 
+3

あなたは 'DF7%>%GROUP_BY(日付、users_user_id)%>%(day_avg =平均(avg_heart_rate))を変異させる'てみたのですか? – Sotos

+0

これはうまくいけば、私は 'avg_heart_rate'の代わりに' df7 $ avg_heart_rate'を使っていました...私の愚かな間違い –

答えて

0

最初にsummariseであり、次にjoinである。

new.df <- df7 %>% 
    group_by(., date, users_user_id) %>% 
    summarise(., day_avg_hr = mean(avg_heart_rate)) %>% 
    ungroup() %>% 
    left_join(df7, .) 
+0

'summarize()/ join()'は必要ありません。単純な 'mutate()'はここでうまくいくでしょう(コメントと重複した答えに示されているように) – MrFlick

関連する問題