Я создал скрипт, который считывает данные из двух репозиториев 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.