Dplyr根据分组数据的特定值将列添加到数据框

时间:2014-09-01 11:27:28

标签: r 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中?

1 个答案:

答案 0 :(得分:2)

这样的事情:

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

然后你可以按fv分组