Добавление строк в data.frame через rbind приводит к ошибке с датами - PullRequest
2 голосов
/ 06 апреля 2020

У меня есть этот код, чтобы каждый день добавлять новую строку в мой фрейм данных коронавируса в R (из Excel). Происходит самая странная вещь: хотя я четко указал Data = "2020-04-05", дата, добавленная в rawData.Rda, - это "2020-04-04", самая последняя дата этого кадра данных. Кроме того, он внезапно начинает показывать время для этой даты: 00:00:00 для каждой строки, кроме новой, где дата 2020-04-04 23:00:00. Что здесь происходит? И исправление ситуации, или новый способ представления данных были бы хорошими решениями. PS: попытался добавить как. Дата, но это не решило проблему.

load("rawdata.Rda")
as.Date(rawData$Data, format="%Y-%m-%d")
newData <- data.frame(Data = "2020-04-05", Casos=11278, Óbitos = 295, Recuperados = 75)
as.Date(newData$Data, format="%Y-%m-%d")
rawData <- rbind(rawData, newData)

rawData первоначально

rawData initially

rawData после выполнения вышеупомянутого кода

rawData after running the aforementioned code

rawData <- structure(list(Data = structure(c(1583107200, 1583193600, 1583280000, 
1583366400, 1583452800, 1583539200, 1583625600, 1583712000, 1583798400, 
1583884800, 1583971200, 1584057600, 1584144000, 1584230400, 1584316800, 
1584403200, 1584489600, 1584576000, 1584662400, 1584748800, 1584835200, 
1584921600, 1585008000, 1585094400, 1585180800, 1585267200, 1585353600, 
1585440000, 1585526400, 1585612800, 1585699200, 1585785600, 1585872000, 
1585958400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    Casos = c(2, 4, 6, 9, 13, 21, 30, 39, 41, 59, 78, 112, 169, 
    245, 331, 448, 642, 785, 1020, 1280, 1600, 2060, 2362, 2995, 
    3544, 4268, 5170, 5962, 6408, 7443, 8251, 9034, 9886, 10524
    ), Óbitos = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    1, 2, 3, 6, 12, 14, 23, 24, 43, 60, 76, 100, 119, 140, 160, 
    187, 209, 246, 267), Recuperados = c(0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 5, 5, 5, 14, 22, 22, 43, 
    43, 43, 43, 43, 43, 43, 68, 68, 75)), row.names = c(NA, -34L
), class = c("tbl_df", "tbl", "data.frame"))

1 Ответ

2 голосов
/ 06 апреля 2020

Вы не назначаете форматированные значения даты для rawData$Data и newData$Data.

rawData$Data <- as.Date(rawData$Data, format="%Y-%m-%d")
newData <- data.frame(Data = "2020-04-05", Casos=11278, Óbitos = 295, Recuperados = 75)
newData$Data <- as.Date(newData$Data, format="%Y-%m-%d")
rawData <- do.call('rbind', list(rawData, newData))
head(rawData)
#         Data Casos Óbitos Recuperados
# 1 2020-03-02     2      0           0
# 2 2020-03-03     4      0           0
# 3 2020-03-04     6      0           0
# 4 2020-03-05     9      0           0
# 5 2020-03-06    13      0           0
# 6 2020-03-07    21      0           0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...