我正在尝试计算同一日期内Instagram故事的保留率(最后一帧的#观众除以第一帧的#观众(。我在 R 中的数据框中有这些数据,其中每个帧都列为一行,任何具有相同日期的帧构成了该日期的整个故事。我很难弄清楚如何在同一日期内获取第一帧和最后一帧的索引,然后将它们除以然后将其应用于数据帧的其余部分?任何帮助将不胜感激!
由于您尚未提供数据或可重现的示例,因此我必须做出一些假设。首先,我需要尝试根据数据框的描述重新创建数据框。听起来看起来像这样:
df
#> dates views
#> 1 2020-01-01 32
#> 2 2020-01-01 28
#> 3 2020-01-01 28
#> 4 2020-01-01 28
#> 5 2020-01-02 28
#> 6 2020-01-02 26
#> 7 2020-01-02 26
#> 8 2020-01-02 25
#> 9 2020-01-03 25
#> 10 2020-01-03 25
#> 11 2020-01-03 25
#> 12 2020-01-03 25
#> 13 2020-01-04 23
#> 14 2020-01-04 20
#> 15 2020-01-04 20
#> 16 2020-01-04 20
#> 17 2020-01-05 18
#> 18 2020-01-05 17
#> 19 2020-01-05 17
#> 20 2020-01-05 17
#> 21 2020-01-06 15
#> 22 2020-01-06 13
#> 23 2020-01-06 12
#> 24 2020-01-06 10
因此,当然,仅当您用df
替换数据框的名称,并将dates
和views
替换为相应的列名称时,以下代码才有效。我还假设每个日期组中的条目从最早到最新排序,因为这就是您的问题所暗示的。如果是这种情况,那么您可以执行以下操作:
result <- do.call("rbind", lapply(split.data.frame(df, df$dates), function(x){
data.frame(date = x$dates[1], retention = x$views[nrow(x)] / x$views[1])}))
rownames(result) <- 1:nrow(result)
这给你这个:
result
#> date retention
#> 1 2020-01-01 0.8750000
#> 2 2020-01-02 0.8928571
#> 3 2020-01-03 1.0000000
#> 4 2020-01-04 0.8695652
#> 5 2020-01-05 0.9444444
#> 6 2020-01-06 0.6666667