169 похожих чатов

Если я правильно понял вы хотите четыре года положить на

один график чтобы был апрель к апрелю? Если так то просто в dataframe нужно создать колонку “period” от 1 до 4 и далее подавать это в aes(col = period)

12 ответов

18 просмотров

Да, это я понимаю. А вот как этот period задать? В питоне есть f-строки (в R тоже есть отдельной библиотекой, но это странный путь, как я понимаю), там я могу подставить год и задать срез. А тут как быть?

Dm-Kb Автор вопроса
Сергей Ильин
Да, это я понимаю. А вот как этот period задать? ...

Я бы в лоб делал что-то вроде этого: tibble(date = as.Date("1991-12-08") + 1:1200, value = rnorm(1200, 2, 1)) %>% mutate(month = month(date), year_indx = year(date) - 1991, period = if_else(month <= 3, year_indx, year_indx + 1)) %>% ggplot() + geom_line(aes(date, value)) + facet_wrap(~period, nrow = 4, scales = "free")

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

Dm-Kb Автор вопроса
Ilya Shutov
Посуточный режим несётся массу вопросов, связанных...

месячный тоже не лишен изъянов, собственно поэтому в росстате существует 101 способ учета сезонности... все зависит от контекста задачи, которого мы не знаем

Dm-Kb Автор вопроса

это вопрос методический: - в феврале бывает 29 дней, а бывает 28 - в разных месяца - разное количество рабочих дней - что если внутри месяца не всегда собирались данные тогда "надо подумать, что делать с отсутствующими датами" технически проблем нет

Dm Kb
это вопрос методический: - в феврале бывает 29 дне...

Кстати, про произвольную годовую разбивку можно и напрямик с датами работать. Более для диалога, чем для для ответа на исходный вопрос. В исходной задаче я бы, может просто докинул еще пару месяцев в каждый фасет, чтобы все переходы декабрь-январь видеть (+2-3 месяца нового года). library(tidyverse) library(lubridate) set.seed(1) df <- tibble(date = as.Date("1991-12-08") + 1:1200, value = rnorm(1200, 2, 1)) # добавляем граничные столбы border_df <- range(df$date) %>% update(month = 4, day = 1) %>% {seq(from = .[[1]], to = .[[2]], by = "1 year")} %>% tibble(date = ., grp = seq_along(.)) bind_rows(df, border_df) %>% arrange(date) %>% fill(grp, .direction = "down") %>% # mutate(date = update(date, year = 2000)) %>% drop_na(value) %>% ggplot() + geom_line(aes(date, value)) + scale_x_date(breaks = scales::date_breaks("months"), labels = scales::date_format("%d.%m")) + facet_wrap(~grp, nrow = 4, scales = "free")

Dm-Kb Автор вопроса

первый период конечно выглядит не очень красиво,но в целом идея понятна

Dm Kb
первый период конечно выглядит не очень красиво,н...

ну там надо с NA разбираться. Что допустимо, что нет. Можно, но здесь нет нужды

Dm-Kb Автор вопроса

Его просто можно удалить )))

Dm Kb
Его просто можно удалить )))

NA может служить разделителем групп для lineplot. либо не морочиться и просто точки ставить.

Dm Kb
screenshot Я бы в лоб делал что-то вроде этого: tibble(date =...

вот, кроме tsibble был интересный пакет. и картинки тут как раз с апреля :) https://cran.r-project.org/web/packages/padr/vignettes/padr_custom.html В целом, блог автора компактный, но любопытный: https://edwinth.github.io/blog/padr-intro/

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта