批量CSV导入并在Rstudio中合并

时间:2019-06-14 19:37:11

标签: r csv

我正在从HOBOware记录器下载文件,并且它生成的CSV混乱。我需要删除第1、5-8列,并跳过第一行。

文件很多,我想一次上传它们,但是跳过行给我带来了问题

由于有了另一个线程,我几乎可以做我想做的事,但是CSV中的一个空白行导致数据无法正确上传,从而创建了空白单元格

这是单独读取每个CSV时可以使用的代码

library(readr)
Pool_620180212 <- read_csv("Pool 6/Pool_620180212.csv", 
    col_types = cols(`Date Time, GMT-05:00` = col_datetime(format = "%m/%d/%y %H:%M:%S")), 
    skip = 1)

所以我认为我可以通过执行以下操作来克服它

setwd("C:/Users/Christopher/Desktop/NEW R/Converted HOBO files")
mydir = "Pool 6"
myfiles = list.files(path=mydir, pattern="*.csv", full.names=TRUE, Skip = 1)

我不知道如何格式化参数以使每个CSV都包含以下格式,以便能够正确读取

"col_types = cols(`Date Time, GMT-05:00` = col_datetime(format = "%m/%d/%y %H:%M:%S")), 
    skip = 1)"

我对R不太有经验,因此删除多余列的任何建议也都很好,我一直在为每个列这样做,这很麻烦

file$column = NULL

1 个答案:

答案 0 :(得分:1)

尝试一下:

library(data.table)

setwd("C:/Users/Christopher/Desktop/NEW R/Converted HOBO files")
x = lapply(list.files(pattern="*\\.csv"), function(x){
  fread(x) 
})%>% rbindlist()

您可以在循环后删除该列。

或在循环中指定它: 我不确定您的专栏是什么,但是看起来像这样:

library(data.table)
library(lubridate)

setwd("C:/Users/Christopher/Desktop/NEW R/Converted HOBO files")
x = lapply(list.files(pattern="*\\.csv"), function(x){
  fread(x) 
x$date = ymd_hms(x$date)
x$col = NULL
})%>% rbindlist()