簡體   English   中英

導入時間單元格格式的 excel 文件

[英]Importing excel files with time cells format

我在 R 中導入 excel 文件時遇到問題。 它將時間單元格轉換為另一種格式,我不知道該怎么做才能改變它。 這是我的 excel 文件: 在此處輸入圖像描述

這是我在 R 中獲得的內容: 在此處輸入圖像描述

這是我用來導入文件的代碼:

file.list <- list.files(pattern='*.xlsx',recursive = TRUE)
file.list <- setNames(file.list, file.list)
df.list <- lapply(file.list, read_xlsx, skip=20)
Actibrut <- bind_rows(df.list, .id = "id")

你知道出了什么問題嗎? 謝謝你。

您的數據在 excel 中轉置。 這是一個問題,因為 data.frames 是列主要的。 使用這個答案,我們可以解決這個問題

read.transposed.xlsx <- function(file, sheetIndex, as.is = TRUE) {
  df <- read_xlsx(file, sheet = sheetIndex, col_names = FALSE)
  dft <- as.data.frame(t(df[-1]), stringsAsFactors = FALSE) 
  names(dft) <- df[[1]] 
  rownames(dft) <- NULL
  dft <- as.data.frame(lapply(dft, type.convert, as.is = as.is))
  return(dft)            
}
df <- bind_rows(lapply(file.list, \(file){
  df <- read.transposed.xlsx(df)
  df[['id']] <- file
}))

之后,您必須適當地轉換列,例如(注意來源可能取決於您的機器):

df$"Woke up" <- as.POSIXct(df$"Woke up", origin = '1899-12-31')
# If it comes in as "hh:mm:ss" use
library(lubridate)
df$"Woke up" <- hms(df$"Woke up")

您需要做幾件事。 首先,您的數據似乎已轉置。 意思是,你的第一行看起來像變量名,列包含數據。 在導入 Rstudio 之前,您可以輕松地轉置數據。 這將解決您在導入數據時看到的 (..1, ..2) 變量名稱。

其次,將日期列作為strings導入。

命令: df.list <- lapply(file.list, read_xlsx, skip=20)使用read_xlsx function。 我認為您需要明確指定列變量類型或將它們作為字符串導入。

然后您可以使用 stringr package (或任何其他包)將字符串轉換為日期變量。 還可以考慮提供您使用過的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM