繁体   English   中英

如何将 R 中的累积时间序列转换为非累积时间序列?

[英]How to transform a cumulative time series to a non-cumulative one in R?

我得到了一个博主的数据集,该博主跟踪她的视频自发布之日起获得了多少观看次数。 问题是数据集中包含视图的累积数量。 例如:第 2 天(2019 年 8 月 26 日)有 111 次观看,这意味着 2 天内有 111 次观看。 我被要求创建 DAILY 视图的时间序列 plot,而不是累积的。 我只是在这里迷路了..它只是意味着 plot.ts(data$views) 吗? 我是否应该通过美元符号指定我将使用的列? 或者我应该使用 lag1 的差异,这样它每天都会产生差异,显然可以为我提供每日视图?

数据集

可重现的数据:

df <- structure(list(date = structure(c(1566687600, 1566774000, 1566860400, 
1566946800, 1567033200, 1567119600), class = c("POSIXct", "POSIXt"
), tzone = ""), views = c(49L, 111L, 167L, 218L, 270L, 312L)), row.names = c(NA, 
-6L), class = "data.frame")

我认为理想的情况是使用 lag() 创建一个新列,如下所示:

library(dplyr)


#dummy data

df<- data.frame(c("day1", "day2", "day3"), c(50, 150, 350))
colnames(df) <- c("day", "views")

#The function
df <-df %>% 
  mutate(per_day_view = ifelse(views == 50, views, views -lag(views)))

#Generic plot, but the x axis would be actual dates
plot(df$day, df$per_day_view)

我为 ifelse() function 道歉,不确定如何使第一行保持其值。

我想你只想要diff

df$daily_views <- diff(c(0, df$views))
df
        date views daily_views
1 2019-08-25    49          49
2 2019-08-26   111          62
3 2019-08-27   167          56
4 2019-08-28   218          51
5 2019-08-29   270          52
6 2019-08-30   312          42

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM