2017-04-07 48 views
-2

我有包含日期​​,user_id,步數,心率的數據。基於兩個向量的dplyr變異(基於2列分組計算第3列)

我想使用dplyrmutate給我一個每天每個user_id具有平均心率的列。每位用戶在一天中有多次心率記錄。 (注:我追加的列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

沒有嘗試'東風7%>%GROUP_BY(日期,users_user_id)%>%變異(day_avg =平均值(avg_heart_rate))'? – Sotos

+0

謝謝,這個工程,我使用'df7 $ avg_heart_rate'而不是'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