Как group_by с диапазоном дат - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть дата-фрейм с датами и текстом в отдельном столбце

Я хочу соединить все строки с датой в определенном диапазоне

Input

 Date           Text
    12-01-2001    sometext
    15-01-2001    sometext2
    23-02-2015    Row3_Text
    28-02-2015    Row4_Text

Ожидаемый результат

Date       Text
12-01-2001 sometextsometext2
23-02-2015 Row3_TextRow4_Text

Попытка 1

df<-df %>% 
  group_by(Date) %>% 
  summarise_all(.funs = function(x) paste(unique(c(dplyr::lag(x, default = NULL), x)), collapse = ":"))

Задача

Как создать диапазон дат (например, в количестве дней, например, 10) для группировки. Я уверен, что есть какой-то неубедительный способ сделать это, но я не могу понять это

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вот решение для второй версии вопроса, чтобы подвести итог по диапазону дат.

df %>%
  mutate(Range = cumsum(c(0L, diff(Date) > 10))) %>%
  group_by(Range) %>%
  summarise(Date = first(Date),
            Text = paste(Text, collapse = ":")) %>%
  select(-Range)
## A tibble: 2 x 2
#  Date       Text               
#  <date>     <chr>              
#1 2001-01-12 sometext:sometext2 
#2 2015-02-23 Row3_Text:Row4_Text

Данные.

df <- read.table(text = "
Date           Text
12-01-2001    sometext
15-01-2001    sometext2
23-02-2015    Row3_Text
28-02-2015    Row4_Text                 
", header = TRUE, stringsAsFactors = FALSE)
df$Date <- as.Date(df$Date, "%d-%m-%Y")
0 голосов
/ 04 ноября 2018

Предполагая , вы хотите сгруппировать по месяцам и иметь первую дату в этом месяце:

df1 %>% 
  group_by(month = lubridate::month(Date)) %>% # create group by month
  summarise(Date = min(Date),
    Text = paste0(Text, collapse = " ")) %>% # paste values together with a space
  select(-month) # drop the month group

# A tibble: 2 x 2
  Date       Text               
  <chr>      <chr>              
1 12-01-2001 sometext sometext2 
2 23-02-2015 Row3_Text Row4_Text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...