Рассчитать разницу между наблюдением в зависимости от значения другой переменной - PullRequest
0 голосов
/ 22 января 2019

У меня есть запись в приложении, и я хочу рассчитать время между двумя конкретными событиями.

Моя структура записи выглядит следующим образом:

    appdata <- data.frame(userid = c(1,1,1,1,1), dayid = c(32,32,32,32,32), activity = c("appstart","levelup","appclose","appstart","appclose"), datesec = c(2670,2726,2755,2787,4161))

    appdata
      userid dayid activity datesec
    1      1    32 appstart    2670
    2      1    32  levelup    2726
    3      1    32 appclose    2755
    4      1    32 appstart    2787
    5      1    32 appclose    4161

Я хочу знать, на какой день, как долгопользователь был активен.Поэтому я должен рассчитать разницу между каждым appstart и appclose, а затем построить сумму, поэтому здесь: (2755-2670) + (4161-2755) = 1459.

Новый набор данных должен выглядеть следующим образом:

    appdata2 <- data.frame(user = c(1), dayid = c(32), usagetime_in_sec = c(1491))

    appdata2
      user dayid usagetime_in_sec
     1    1    32             1459

Вот мой основной подход, но я не знаю, как сказать R всегда вычислять разницу между appstart и следующим событием appclose:

    apdata2 <- appdata %>% 
      group_by(userid, dayid) %>%
      summarise(usagetime_in_sec = sum(datsec(type == "appclose") - datesec(type == "appstart")))

1 Ответ

0 голосов
/ 22 января 2019

Вы были очень близки. Я думаю, вам нужно что-то вроде

library(dplyr)

appdata %>%
  group_by(userid, dayid) %>%
  summarise(usagetime_in_sec = sum(datesec[activity == "appclose"] - 
                                   datesec[activity == "appstart"]))


#   userid dayid usagetime_in_sec
#    <dbl> <dbl>            <dbl>
#1      1    32             1459

Однако убедитесь, что у вас одинаковое количество «appclose» и «appstart» activity, иначе это может испортить вычисление.

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