【问题标题】:Importing excel files with time cells format导入时间单元格格式的 excel 文件
【发布时间】:2021-12-28 13:31:52
【问题描述】:

当我在 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")

你知道什么是错的吗? 谢谢。

【问题讨论】:

    标签: r excel time type-conversion


    【解决方案1】:

    您的数据在 Excel 中转置。这是一个问题,因为 data.frames 是列主要的。使用this answer 我们可以解决这个问题

    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")
    

    【讨论】:

    • 我在“df
    • 如果您的 R 版本早于 4.1.0,您需要将 \(...) 替换为 function(...)(参数 = ...)。例如。 \(file) 更改为 function(file)
    • col_types = "text" 添加到read_xlsx 可能会有所帮助(未经测试)。
    • 对不起,“file.list”应该代表什么,我有一条错误消息:lapply错误(file.list,function(file){:objet 'file.list' introuvable
    • file.list &lt;- list.files(pattern='*.xlsx',recursive = TRUE).
    【解决方案2】:

    您需要做几件事。 首先,您的数据似乎已转置。意思是,你的第一行看起来像变量名,列包含数据。在导入 Rstudio 之前,您可以轻松地转置数据。这将解决您在导入数据时看到的 (..1, ..2) 变量名称。

    其次,将日期列导入为strings

    命令:df.list &lt;- lapply(file.list, read_xlsx, skip=20) 使用read_xlsx 函数。我认为您需要明确指定列变量类型或将它们导入为字符串。

    然后您可以使用 stringr 包(或任何其他包)将字符串转换为日期变量。还可以考虑提供您使用过的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多