2017-08-07 2 views
1

J'ai les données de 2016-01-01 à 2017-07-30. Je veux grouper par des données tous les trois mois et résumer. Il est difficile de montrer l'ensemble des données, car cela ne rentre pas ici. J'utilise généralement lubridate et dplyr pour la manipulation de données mais je suis incapable de comprendre comment enrouler des données tous les trois mois. Le pseudo-code de ce que je suis en train d'accomplir est comme ci-dessous:R: Regrouper par données tous les N mois

df$month <- month(as.Date(df$date)) 
df$year <- year(as.Date(df$date)) 
df %>% group_by(month + "3 Months", year) %>% summarise(n = sum(pageviews)) 

Pouvez-vous s'il vous plaît me suggérer une façon simple de faire cela? Je sais que c'est très simple en utilisant dplyr. Merci beaucoup d'avance.

+0

n'avez-vous pas de fonctions pour obtenir des trimestres dans lubrifier? –

+1

Oui, il y a une fonction dans lubridate et merci de le signaler. Mais, si je veux essayer n différents mois ou jours. Je suis à la recherche d'une réponse plus généralisée. –

+0

try 'df $ month_group <- (df $ month-reference_month)% /% 3' et groupe par month_group –

Répondre

2
df %>% 
    mutate(dategroup = lubridate::floor_date(date, "2 months")) %>% 
    group_by(dategroup) %>% ... 

floor_date, ceiling_date et round_date acceptent comme arguments:

une chaîne de caractères spécifiant l'unité de temps ou à un multiple d'une unité à être arrondi à. Les unités de base valides sont les suivantes: seconde, minute, heure, jour, semaine, mois, mois, demi-année ou année. Les abréviations anglaises arbitraires comme dans le constructeur de période sont également supportées. L'arrondi à plusieurs unités (à l'exception des semaines) est pris en charge par v1.6.0.

+0

Voo !! Merci beaucoup. Tu as rendu ma vie si facile. –