#r #dplyr #r-markdown #tidyverse
Вопрос:
Обычно я читаю эти данные из локальной системы, в то время как я вручную изменяю дату, например, сегодняшняя дата-2 ноября, которая похожа на этот формат по ссылке ниже (2021_11_02), поэтому я создаю отчет за день до 1 ноября 2021 года (2021_11_01).
Я вручную обновляю эту дату, прежде чем смогу создать отчет
теперь я хочу запланировать автоматизацию, которая будет запускать отчет сама по себе
как мне написать код в r, который автоматически обновит дату на день -1, которая указана вчера в отчете или в любом другом месте, требуемом в сценарии?
есть ли способ, которым r может автоматически обновлять дату на минус 1 (всегда используйте дату вчера)
или
как проинструктировать R автоматически использовать день за вычетом одной даты в любом сценарии, в котором есть дата
пожалуйста, ознакомьтесь с образцом ссылки с локального компьютера
DWReport_2021_11_01 lt;-read_csv("C:/Users/Guest 1/Downloads/DWReport_2021-11-01.csv") DWReport_2021_11_01_1_ lt;-read_csv("C:/Users/Guest 1/Downloads/DWReport_2021-11-01 (1).csv") match_reportlt;-rbind(DWReport_2021_11_01,DWReport_2021_11_01_1_)
кроме того, я хочу, чтобы что-то всегда меняло дату как день минус один, который за день до этого, когда я запрашиваю базу данных, см. Пример сценария ниже
tbl(connect, "accotdebits")%gt;% filter(dates gt; "1633046400" amp; dates lt; "1633910399" amp; tranx_status == "Successfull")%gt;% collect()
два вопроса один для чтения за день минус один с моего локального компьютера два для автоматического обновления даты до дня минус один вчера всякий раз, когда он запрашивает базу данных
Ответ №1:
Вы можете использовать Sys.Date (), чтобы узнать сегодняшнюю дату. Вы можете вычесть день просто мы с минус 1.
yesterday lt;- Sys.Date() - 1 yesterday_formatted lt;- format( yesterday, "%Y_%m_%d")
Затем вы можете использовать эти значения в своем коде
temp lt;- read_csv( paste0("C:/users/guest/downloads/DWReport_", yesterday,".csv") assign(paste0("DWReport_", yesterday_formatted), temp)
Ваш последний вопрос.. где вы запрашиваете базу данных… Необычно не передавать дату в базу данных? Что это за ароматизатор SQL? Это просто временная метка Unix?
Если вы преобразуете дату в POSIXct, а затем в числовое значение, вы можете получить метку времени. Возможно, вам потребуется добавить HH мм вручную…
yesterday_numeric lt;- as.numeric( as.POSIXct( format (yesterday, "%Y-%m-%d 00:00:00"))) tbl(connect, "accotdebits")%gt;% filter(dates gt; yesterday_numeric amp; dates lt; (yesterday_numeric (24*60*60)) amp; tranx_status == "Successfull")%gt;% collect()