того чтобы в гугл таблицу загружать текстом соответствующий месяц, создал отдельный df, который джойню перед заливкой. Вопроса 2: 1) это оптимальное решение или есть получше? 2) Если это оптимально то можно ли как-нибудь сохранить русский текст при выполнении скрипта через командную строку? (например, Январь заменяется на Январь). При выполнении скрипта через rstudio таких проблем нет.
> Sys.setlocale("LC_TIME", "English") [1] "English_United States.1252" > format(Sys.Date(), format = "%Y-%B-%d") [1] "2021-November-04" > > Sys.setlocale("LC_TIME", "Russian") [1] "Russian_Russia.1251" > format(Sys.Date(), format = "%Y-%B-%d") [1] "2021-Ноябрь-04"
и проверьте, какая кодировка у скрипта, в винде с этим проблемы
Скорее всего у вас файл скрипта (тратата.R) сохранён в UTF-8, на Windows это ломает кодировку, попробуйте пересохранить его в CP1251, это можно сделать либо через RStudio, либо через практически любой текстовый редактор вроде Notepad++.
по поводу оптимально, не особо. у вас избыточно, вытащть месяц через month, потом ещё и джойнить. можно это сделать в одно действие даже на базовом R вполне, что бы привести месяц к текстовому виду: Sys.setlocale(locale = 'russian') df <- data.frame( date = seq(as.Date('2021-10-28'), as.Date('2021-11-03'), by = 'day'), val = sample(c(100,200,300), 7, replace = T) ) df$month <- format(df$date, "%B") df Получится вот так: date val month 1 2021-10-28 100 Октябрь 2 2021-10-29 100 Октябрь 3 2021-10-30 100 Октябрь 4 2021-10-31 100 Октябрь 5 2021-11-01 100 Ноябрь 6 2021-11-02 200 Ноябрь 7 2021-11-03 100 Ноябрь Join всё же довольно дорогая операция, если говорить про оптимальность
Обсуждают сегодня