повторные наблюдения в среднем за месяц - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть данные о домохозяйствах, которые совершали покупки с индивидуальным идентификатором для каждой квитанции за некоторое время, когда недели кодируются как обычные целые числа.Мне нужно подсчитать количество квитанций от каждого домохозяйства в течение 4 недель (данные за 3 года; 1 год - 52 недели, 2 - 53, 3d - 48).В конце концов я хочу иметь среднее количество покупок за 4 недели для каждой семьи.Если решение включает преобразование в месяцы и подсчет ежемесячно, это также работает.Набор данных содержит более 100 тыс. Строк.Я совершенно новичок в R, все предложения очень ценятся!

Household<-c(1,2,3,1,1,2,2,2,3,1,3,3)
Week<-c(201501,201501,201501,201502,201502,201502,201502,201503,201503,201504,201504,201504)
Receipt<-c(111,112,113,114,115,116,117,118,119,120,121,121)
df<-data.frame(Household,Week,Receipt)

1 Ответ

0 голосов
/ 13 декабря 2018

Рассчитывается количество квитанций (строк) на единицу времени, за 4-недельный периодтакже можно сделать это за один шаг

df[, .N, by = .(Household, period = floor(Week/4))
   ][, .(avg_reciepts = mean(N)), by = Household]


#    Household avg_reciepts
# 1:         1            2
# 2:         2            4
# 3:         3            2

эквивалент dplyr:

library(dplyr)

df %>% 
  group_by(Household, period = floor(Week/4)) %>% 
  count %>% 
  group_by(Household) %>% 
  summarise(avg_reciepts = mean(n))

# # A tibble: 3 x 2
#   Household avg_reciepts
#       <dbl>        <dbl>
# 1         1            2
# 2         2            4
# 3         3            2
...