Загрузить данные из Excel в R - дополнительные даты появляются в первом столбце?

В моей попытке загрузить данные из Excel в R:

> book <- loadWorkbook(file.choose())
> signals = readWorksheet(book, sheet = "signals", header = TRUE)
> signals

который возвращает:

                 time signal1 signal2
1 1899-12-31 08:30:00    0.43   -0.20
2 1899-12-31 08:31:00    0.54    0.33
3 1899-12-31 08:32:00    0.32   -0.21

Почему я получаю колонку с 1899-12-31? Это точно не в листе Excel. Остальное правильно.

2 ответа

Я нашел этот параграф в документах:

Принудительное преобразование из Numeric в DateTime: поскольку Excel воспринимает Dates/Times как Числа с некоторым дополнительным форматированием, преобразование из Numeric в DateTime фактически возможно. Числа в этом случае представляют количество дней с 1900-01-00 (да, день 00! - см. http://www.cpearson.com/excel/datetime.htm). Обратите внимание, что в R 0 представлен как 1899-12-31, так как нет 1900-01-00. Дробные дни представляют часы, минуты и секунды.

Это, кажется, проливает некоторый свет на проблему.

Вот как вы можете сохранить фрейм данных в файл Excel и загрузить фрейм данных из файла Excel.

library(lubridate)
library(stringr)
library(xlsx)

#Creating time and date data
t1 <- ymd_hms("2011-06-04 12:00:00")
t2 <- ymd_hms("2011-06-05 11:00:00")
t3 <- ymd_hms("2011-06-06 10:00:00")

#Storing the time and date data in a data frame 
#Storing t1
df <- data.frame(NULL)
df <- rbind(df, data.frame(t(strsplit(as.character(t1), " ")), stringsAsFactors = F))
colnames(df) <- c("V1")
df <- str_split_fixed(df$V1, " ", 2)
df <- gsub("[^0-9.:-]","",df)
colnames(df) <- c("Date", "Time")
#Storing t2
tmp <-  data.frame(t(strsplit(as.character(t2), " ")), stringsAsFactors = F)
colnames(tmp) <- c("V1")
tmp <- str_split_fixed(tmp$V1, " ", 2)
tmp <- gsub("[^0-9.:-]","", tmp)
df <- rbind(df, tmp)
#Storing t3
tmp <-  data.frame(t(strsplit(as.character(t3), " ")), stringsAsFactors = F)
colnames(tmp) <- c("V1")
tmp <- str_split_fixed(tmp$V1, " ", 2)
tmp <- gsub("[^0-9.:-]","", tmp)
df <- rbind(df, tmp)

#Writing the data frame to an Excel file
write.xlsx(x = df, file = "df.xlsx", sheetName = "Sheet1", row.names = FALSE)
#reading the data from the Excel file
readDF <- read.xlsx("df.xlsx", sheetName="Sheet1")
Другие вопросы по тегам