对R中不同列数的行求和
我有一个数据框,每个用户一行。对于每个用户,我都有他们第一次登录网站的时间信息(第1行),以及之后的每一天(每天是一列)他们每天登录多少次的信息 我想创建一个新的专栏,告诉我用户在首次登录后7天内登录网站的次数。这7天的时间对每个用户都是不同的 我想做一个for循环,但不知道如何进行更改以包含该求和的不同列名对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
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是,这是我们对网站内容进行重大更改后的首次登录。