Нахождение разницы в уровнях фактора - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть% Y-% m, отформатированный как фактор, с 24 уровнями. Данные форматируются по совокупной активности за месяцы.

MemberID   Month_Yr   freq
1          2010-01     3
1          2010-03     6
2          2010-01     1
2          2010-05     2
3          2011-03     4 
4          2010-02     1 

Я рассчитываю рассчитать общее количество месяцев, в течение которых клиенты были активны, рассчитав разницу между самой старой и самой новой активной датой.

Теперь я попробовал:

month.aggregated$MonthlyAverage <- ave(month.aggregated$freq, month.aggregated$ï..MemberID)

, который не возвращает правильное значение, поскольку в течение нескольких месяцев клиент не активен. Мне как-то нужно общее количество уровней, которые будут включены в код.

Есть идеи?

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете рассчитать количество месяцев на уровне фактора следующим образом:

n_months <- 12 * as.numeric(substr(Month_Yr, 1, 4)) + as.numeric(Month_Yr, 6, 7))

Чтобы затем можно было рассчитать месяцы с момента начала записи следующим образом:

df$month_count <- n_months - min(n_months)

и вы можно использовать dplyr для получения итоговой разницы:

library(dplyr)

df %>% group_by(MemberID) %>% summarize(months_active = max(month_count) - min(month_count))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...