【问题标题】:Dplyr add column to data frame based on specific value of grouped dataDplyr根据分组数据的特定值将列添加到数据框中
【发布时间】:2014-09-01 11:27:27
【问题描述】:

我有一个数据框,其中包含不同用户每周的页面浏览量。它看起来像这样:

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

我想绘制每周的平均页面浏览量。但是,我想按用户在第一周的页面浏览量对用户进行分组,以便为​​具有不同活动水平的用户绘制单独的轨迹。我可以通过这样做为每个用户获得第一周

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

但我不知道如何按第一周的行中的视图值进行分组。我尝试在 summarise 中使用用户定义的函数,这似乎有效,但它从未终止,我明白为什么 - 它必须多次重新计算所有内容。

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 中?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    类似这样的:

    df %&gt;% group_by(Userid) %&gt;% arrange(week) %&gt;% mutate(fv = first(views) )

    然后你可以按fv分组

    【讨论】:

    • 排列 --> 第一个技巧太棒了!谢谢!感谢您解决我想问的问题 - 我很难提出这个问题。
    • df %&gt;% group_by(Userid) %&gt;% mutate(fv = first(views, week))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多