【问题标题】:read multiple csv files with timestamp in R在R中读取多个带有时间戳的csv文件
【发布时间】:2020-09-22 03:14:09
【问题描述】:

我发现了几个关于如何将多个 csv 文件读入 R 的问题。但是,它们都是按顺序命名的。现在,我有带有时间戳的文件。所以我发现很难找到一种方法来阅读它们。有人可以帮忙吗? 例如,它们看起来像这样:

99_Experiment Version A_2020-06-02_12h26.48.883.csv

我不需要日期,它只是自动生成的。有没有简单的方法可以去除?然后所有文件都将以相同的格式命名(_Experiment Version A.csv,前面有升序数字),我也许可以使用其他帖子之一来阅读它们

【问题讨论】:

  • 所有文件都在一个文件夹中吗?如果是:是否还有其他您不想导入的 .csv 文件?
  • 你看到this
  • @MartinGal 是的,它们都在一个文件夹中,没有其他我不想导入的文件,我都需要它们:D

标签: r csv file timestamp


【解决方案1】:

以下是您可以尝试的一些选项,具体取决于您要将数据导入 R 的方式。

注意:确保使用 setwd() 函数将您的工作目录设置为您的文件所在的文件夹。

以下将导致每个数据框作为单个列表中的单独元素:

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)

如果您想将这些列表元素组合成一个数据框,可以使用do.call(rbind,...)dplyr::bind_rows()data.table::rbindlist() 等函数。

如果您真的希望您的 .csv 文件作为单独的数据框,您可以使用 assign() 执行以下操作:

temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))

或者您可以使用以下不依赖于assign() 函数的代码:

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         read.csv), envir = .GlobalEnv)

我希望这会有所帮助!

【讨论】:

  • 嘿,我之前看到过这个解决方案,但是如果我使用你建议的函数,我只会得到一个包含一列的数据框(前面列的条目由 , 分隔)
  • 它应该有多少列?是否有第一列被读取为行标签?如果是这样,您可以在read.csv() 函数中设置row.names=FALSE。此外,您可以设置sep=",",它应该告诉函数您的数据用逗号分隔。不确定这是否可行,sep="," 应该是默认值。
  • 它应该有63列,不,第一个已经填满了数据,我有一个标题。
  • temp = list.files(pattern="*.csv") 是否至少会生成您的.csv 文件的完整列表?
  • 您是否尝试在我发布的第二段代码中调整read.csv(temp[i]) 以读取read.csv(temp[i], head = TRUE, sep = ",")?结果将是以下行:for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i], head = TRUE, sep = ",")).
猜你喜欢
  • 2013-04-19
  • 2016-02-11
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
相关资源
最近更新 更多