Я изо всех сил пытаюсь нарезать свои строки на основе глобальных критериев. У меня есть такой дф:
col1 col2 col3
1. 2020-10-31
2. 2020-10-30
3. 2020-10-29
4. 2020-10-28
....
43. 2020-9-30
44. 2020-9-29
45. 2020-9-28
46. 2020-9-27
И так далее... По сути, каждая строка в первом столбце содержит определенную дату (г/м/д), и она уменьшается. Я использую функцию slice() для разбивки df на основе помесячного подхода (и создания новых df, разделенных по месяцам). Итак, что я делаю, так это определяю, в какой строке начинается месяц и в какой он заканчивается, затем я делаю что-то вроде этого:
dfnovember <- df %>%
slice(1:46)
С ним я получаю то, что мне нужно, но он жесткий (очень ручной). Я хотел бы знать, есть ли другая функция, в которой я могу применять критерии (ежемесячно) и получать все это одним ударом. Что-то вроде (псевдофункция):
dfgenericmonth <- df %>%
slice(month[day 31 to 01])
Кто-нибудь может мне помочь?
@MrFlick мне всегда не хватает правильного шаблона. Спасибо, что обратили мое внимание. я совершу больше в следующий раз. Я все еще знакомлюсь с платформой, хе-хе
Вы можете извлечь месяц из col1
и использовать его в split
для разделения данных на список фреймов данных, по одному на каждый месяц.
result <- split(df, format(as.Date(df$col1), '%Y-%m'))
Вариант - конвертировать в yearmon
класс из zoo
library(zoo)
library(dplyr)
out <- df %>%
group_split(grp = as.yearmon(col1), .keep = FALSE)
Может быть, сгруппировать по
month
, а затем использоватьgroup_split()
. Было бы проще протестировать правильный воспроизводимый пример с образцом ввода вdput()
форме и желаемым результатом, который можно использовать для тестирования и проверки возможных решений.