Загрузить данные из 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")