У меня есть кадр данных, содержащий количество просмотров страниц на пользователя в неделю. Я хочу определить для каждого пользователя, увеличивались ли их взгляды, уменьшались или оставались неизменными после определенного события. Мои данные выглядит следующим образом:Сравните со следующей строкой, сгруппированы, data.table
Userid week xeventinweek numviews
Alice 1 2 5
Alice 2 0 3
Alice 4 1 6
Bob 2 2 3
Bob 3 0 5
Таким образом, в этом случае, вид Алисы уменьшилось после того, как она была 2 события в 1-й недели, и у нее не было никаких событий в 2 недели, чтобы измерить. Однако Боб увеличил свои взгляды с 3 по 5 неделю после того, как у него было два события.
Я хотел бы получить таблицу с разницей в мнениях на каждую неделю, в которой было хотя бы одно событие. Так оно и должно выглядеть примерно так:
Userid week xeventinweek numviews numnextweek difference
Alice 1 2 5 3 -2
Alice 4 1 6 NA NA #the row for week 2 is missing because there were no events then for Alice
Bob 2 2 3 5 2
Это не важно иметь как numnextweek и разностные столбцы - либо или в порядке.
Я смог сделать это, используя data.table и цикл for, но потребовалось так много времени, чтобы выполнить, что это было невозможно. Я думал о том, чтобы использовать скользящее соединение, но это не представляется возможным сгруппированными данными (т. Е. Это нужно будет делать индивидуально для каждого пользователя.) Как это сделать, используя собственную функциональность data.table?
это работает - благодаря! – bsg