cronR для планирования сценария R записывает столбец .csv (Дата) в неправильном формате - PullRequest
1 голос
/ 22 марта 2020

Я создал скрипт, который считывает данные из двух репозиториев GitHub, переформатирует наборы данных, связывает их вместе по строкам, а затем записывает все в новый файл .csv. Затем я запланировал запуск этого сценария каждый час с помощью функций пакета cronR .

Вот мой код:

devtools::install_github("tidyverse/googlesheets4")

library(dplyr)
library(googlesheets4)
library(RCurl)

setwd(dir = "YOUR_WORKING_DIRECTORY")

###############################################################################
#================== TIME SERIES DATA FOR CASES AND DEATHS ====================#
###############################################################################

# 1. #####==== DATASETS =====#####

# 1.1 ###= Cases #####

# These files are updated on GitHub every day.
cases <- read.csv(text = getURL(url = "https://raw.githubusercontent.com/openZH/covid_19/master/COVID19_Cases_Cantons_CH_total.csv"),
                  header = TRUE,
                  stringsAsFactors = FALSE,
                  na.strings = c("", "NA"),
                  encoding = "UTF-8")

# Removed data for whole Switzerland and Leichtenstein
cases <- subset(x = cases,
                !is.element(el = canton,
                            set = c("CH", "FL")),
                select = c("date",
                           "canton",
                           "tested_pos"))

names(cases)[1] <- "Date"

# Dataset restructured according to the cases dataset format
cases <- reshape(data = cases,
                 idvar = "Date",
                 timevar = "canton",
                 v.names = "tested_pos",
                 direction = "wide",
                 )

names(cases) <- gsub(pattern = "tested_pos.",
                     replacement = "",
                     x = names(cases))

cases[is.na(cases)] <- 0

cases <- cases[order(cases$Date,
                     decreasing = FALSE), ]

# More updated dataset
cases2 <- read.csv(text = getURL(url = "https://raw.githubusercontent.com/daenuprobst/covid19-cases-switzerland/master/covid19_cases_switzerland.csv"),
                   header = TRUE,
                   stringsAsFactors = FALSE,
                   na.strings = c("", "NA"),
                   encoding = "UTF-8")

# Remove total daily cases for Switzerland
cases2 <- subset(x = cases2,
                 select = -c(CH))

# rbind between two cases datasets
cases_tot <- bind_rows(cases[1:7, ],
                       cases2)

rownames(cases_tot) <- seq(from = 1,
                           to = nrow(cases_tot),
                           by = 1)

write.csv(x = cases_tot,
          file = paste0(getwd(),
                        "/cases_tot.csv"),
          row.names = FALSE,
          quote = FALSE)

Когда я запускаю сценарий вручную все в порядке, и .csv производится нормально, но если вы попытаетесь запланировать запуск этого скрипта через пакет cronR (из RStudio IDE нажмите Addins -> Расписание R скриптов в Linux / Unix) Сохраненный файл .csv отличается только для столбца «Дата». На самом деле даты первого набора данных находятся в первом столбце, но даты второго набора данных (для привязки к первому через bind_rows()) находятся в конце набора данных, а заголовок имеет новое странное имя ( как вы можете видеть из этого изображения ).

Есть ли у вас какие-либо идеи о том, в чем может быть проблема? Большое спасибо!

PS: я работаю на MacBook Pro в конце 2016 года, 8 ГБ ОЗУ, с установленной MacOS Catalina.

...