Я хочу сравнить поле Дата двух фреймов данных и добавить только самые последние записи из второго. Первый фрейм данных имеет последние записи. Эти записи обновляются ежедневно с сайта. Второй читает записи из файла CSV, который я сохранил за предыдущий день.
данные, которые я читаю из inte rnet:
df_new<-structure(list(DCounter = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
CCounter = c(125L, 36L, 22L, 17L, 11L, 8L, 4L, 20L, 8L, 3L),
RCounter = c(24L, 33L, 34L, 50L, 33L, 21L, 62L, 10L, 20L, 31L),
CrCounter = c(1L, 1L, 8L, 2L, 2L, 8L, 2L, 3L, 0L, 1L),
Date = c("20/03/2020", "19/03/2020", "18/03/2020", "17/03/2020", "16/03/2020", "15/03/2020", "14/03/2020", "13/03/2020", "12/03/2020","11/03/2020")),
class = "data.frame", row.names = c(NA, 10L))
Отформатируйте поле даты, чтобы оно было датой. введите и переименуйте поле
df_new$Date = as.Date(df_new$Date, format = "%d/%m/%y")
colnames(df_new)<-c("D","C","R","Cr","Date")
#old data- read from csv file has data from yesterday
#----------------------
#df_old <- read.csv("df_Saved.csv",header=T)
df_old<-structure(list(D = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
C = c(6L, 12L, 7L, 11L, 8L, 4L, 20L, 8L, 3L, 4L, 1L, 3L, 3L, 0L, 2L, 0L, 0L, 10L, 1L, 0L, 2L, 17L, 15L, 6L, 5L),
R = c(3L,3L, 0L, 3L, 2L, 2L, 0L, 0L, 3L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
Cr = c(1L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
Date = structure(c(17L, 16L, 15L, 14L, 13L, 12L, 11L, 10L, 9L, 8L, 25L, 24L, 23L, 22L, 21L, 20L, 19L, 18L, 7L, 6L, 5L, 4L, 3L, 2L, 1L),
.Label = c("2/24/2020", "2/25/2020", "2/26/2020", "2/27/2020",
"2/28/2020", "2/29/2020", "3/1/2020", "3/10/2020", "3/11/2020", "3/12/2020",
"3/13/2020", "3/14/2020", "3/15/2020", "3/16/20", "3/17/20", "3/18/20",
"3/19/20", "3/2/2020", "3/3/2020", "3/4/2020", "3/5/2020", "3/6/2020", "3/7/2020", "3/8/2020", "3/9/2020"), class = "factor")),
class = "data.frame", row.names = c(NA, -25L))
Получите сегодняшнюю дату и отформатируйте ее
#--------------
dateToAdd<-format(Sys.time(), "%Y/%m/%d")
#extract ONLY updated dates
df_newExtracted<- with(df_new, df_new[(Date >= dateToAdd), ])
if(df_old$Date[1]< df_newExtracted$Date[1] ){
df_final<-rbind(df_newExtracted,df_old)
cat("Add New records\n")
}else{
df_final<-df_old
cat("Nothing new \n")
}
df_final
write.csv(df_final, "df_Saved.csv", row.names=FALSE)
Я не смог выяснить причину проблемы root, иногда, если разница в дате В один день это работает, а иногда разница 2 дня, это не работает. Иногда, если df_newExtracted
представляет дату, которая не была обновлена сайтом, как, например, например: если мы запустили код сегодня, а они все еще не обновили свои записи, переменная будет пустой и cra sh все вычисления ,
Некоторые предлагают проблему, связанную с записью в CSV-файл и чтением CSV-файла, который изменит формат и сделает файл нестабильным, и я должен использовать lubridate
, поэтому я добавил строки форматирования. Любое предложение?