Как преобразовать кумулятивный временной ряд в нескумулятивный в R? - PullRequest
0 голосов
/ 05 мая 2020

Мне предоставлен набор данных блоггера, который отслеживал, сколько просмотров получило ее видео с того дня, как оно было выпущено. Проблема говорит о том, что в набор данных включено совокупное количество просмотров. Например: день 2 (26 августа 2019 г.) имеет 111 просмотров, что означает 111 просмотров за 2 дня. Меня просят создать график временных рядов ЕЖЕДНЕВНЫХ просмотров, а не совокупных. И я просто потерялся здесь .. Означает ли это только plot.ts (data $ views)? Должен ли я просто указать столбец, который я буду использовать, указав его через знак доллара? Или я должен использовать разницу lag1, чтобы она просто учитывала разницу каждый день и, по-видимому, предоставляла мне ежедневные просмотры?

dataset

Воспроизводимые данные:

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")

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Думаю, вы просто хотите 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
0 голосов
/ 05 мая 2020

Я думаю, что идеальной ситуацией было бы использовать 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 (), не знаю, как сделать первый row сохраняет свои значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...