2014-09-01 124 views
1

我有一個數據框,其中包含不同用戶每週的頁面瀏覽次數。它看起來像這樣:Dplyr根據分組數據的特定值將列添加到數據框中

Userid week views 
eerr 24 1 
dd  24 2 
dd  25 1 
... 

我想繪製每週的平均頁面瀏覽量。但是,我想根據用戶在第一週內瀏覽的頁面數來對用戶進行分組,以便爲​​具有不同活動級別的用戶繪製單獨的軌跡。我可以通過做

weekdf = df %>% group_by(Userid) %>% mutate(firstweek = min(week)) 

得到的第一個星期爲每個用戶,但我無法通過視圖的列與第一個星期的價值弄清楚如何組。我嘗試在總結中使用用戶定義的函數,這似乎工作,但它從未終止,我可以看到爲什麼 - 它必須多次重新計算所有內容。

getoffset <- function(week, Userid,minweekdf) 
{ 
minweek = minweekdf[minweekdf$Userid == Userid,2] 
offsetweek = week - minweek 
return(offsetweek) 
} 

offsetdf = df %>% group_by(Userid, week) %>% summarise(offsetweek = getoffset(week, Userid, minweek)) 

我該怎麼做,最好在dplyr中?

回答

2

事情是這樣的:

df %>% group_by(Userid) %>% arrange(week) %>% mutate(fv = first(views))

,然後你可以通過FV

+0

+1的'first'組。我無法弄清楚OP的要求。 – akrun 2014-09-01 11:51:23

+0

安排 - >第一招絕非易事!謝謝!並感謝您計算出我想問的問題 - 我很難制定這個問題。 – bsg 2014-09-01 12:44:26

+0

或'df%>%group_by(Userid)%>%mutate(fv = first(views,week))' – hadley 2014-09-01 15:06:36

相關問題