对R中不同列数的行求和

对R中不同列数的行求和,r,loops,rowsum,R,Loops,Rowsum,我有一个数据框,每个用户一行。对于每个用户,我都有他们第一次登录网站的时间信息(第1行),以及之后的每一天(每天是一列)他们每天登录多少次的信息 我想创建一个新的专栏,告诉我用户在首次登录后7天内登录网站的次数。这7天的时间对每个用户都是不同的 我想做一个for循环,但不知道如何进行更改以包含该求和的不同列名 tibble(id=c(1:4), first_log = c("18-12-01", "18-12-02", "18-12-02", "18-12-05"), X18_12_01 = c

我有一个数据框,每个用户一行。对于每个用户,我都有他们第一次登录网站的时间信息(第1行),以及之后的每一天(每天是一列)他们每天登录多少次的信息

我想创建一个新的专栏,告诉我用户在首次登录后7天内登录网站的次数。这7天的时间对每个用户都是不同的

我想做一个for循环,但不知道如何进行更改以包含该求和的不同列名

tibble(id=c(1:4), first_log = c("18-12-01", "18-12-02", "18-12-02",
"18-12-05"), X18_12_01 = c(NA,1,1,2), X18_12_02 = c(5,2,1,1))

当然,数据集有更多这样的列和行

假设在
first_log
之后只有7列,则这将计算在跨列的时间跨度内登录的总次数。在下面的示例中,它仅显示用户在2天内登录的总次数

库(tidyverse)
tibble(id=c(1:4),
第一个日志=c(“18-12-01”,
"18-12-02", 
"18-12-02",
"18-12-05"), 
X18_12_01=c(NA,1,1,2),
X18_12_02=c(5,2,1,1))%>%
收集(key=“days”,value=“times\u visted”,3:长度(%)%>%
分组依据(id)%>%
总结(总访问量=总和(访问次数,na.rm=T))
#>#tibble:4 x 2
#>id总访问量
#>           
#> 1     1            5
#> 2     2            3
#> 3     3            2
#> 4     4            3

由(v0.2.1)于2019-03-04年创建,在首次登录后有任意数量的日期列,我们可以执行以下操作

  • 将日期列收集到一个列中,这样我们就可以方便地实际操作数据。这是一种整洁的格式,每一行都是用户日的组合
  • 将日期转换为
    Date
    对象,并计算观察和
    第一次日志之间的天数。我们使用一个
    时间间隔
    来实现这一点,以确保围绕时间轴违规的合理行为
  • 筛选
    以仅保留在所需周范围内发生的观察结果
  • 汇总
    以计算此期间的总登录次数,并
    右键连接
    将值返回到原始值。注意,如果没有更多的样本数据,就很难更具说明性,因为这里实际上只对一个单元格进行求和,因此只有id=1的用户才有任何值要求和
  • 库(tidyverse)
    图书馆(lubridate)
    待定%
    聚集(天,登录次数,-id,-first\u log)%>%
    变异(
    第一个日志=ymd(第一个日志),
    天=天%>%str\u删除(^X”)%%>%ymd(),
    自事件发生后的天数=as.period(第一个日志%-%day,“day”),
    ) %>%
    筛选(事件发生后天数>事件发生后天数(0)&事件发生后天数%
    分组依据(id)%>%
    总结(总登录次数=总和(总登录次数,na.rm=TRUE))%>%
    右键连接(tbl,by=“id”)
    #>#A tibble:4 x 5
    #>id总数\u首次登录\u日志X18\u 12\u 01 X18\u 12\u 02
    #>                          
    #>1118-12-01 NA 5
    #>2 NA 18-12-02 1 2
    #>3 NA 18-12-02 1 1
    #>4 NA 18-12-05 2 1
    

    由(v0.2.1)

    在提供的数据中于2019-03-04创建,用户在首次登录日期之前已登录。请参阅ids 2-4是,这是我们对网站内容进行重大更改后的首次登录。