仅读取csv文件的列/标题

时间:2018-02-23 09:35:20

标签: r csv filter header data-import

我尝试了一些代码,但我无法提出解决方案,我的问题如下。

我有一个工作目录,其中包含许多独立的csv文件和唯一名称。 有34种不同类型的文件,具体取决于列数,有些具有A到C列,有些则有A到E.它们的共同点是每个文件都有A列和B列。

我现在想做什么,我想根据它们的数量和类型对它们进行排序/过滤。

例如:类型1:列A + B,类型2:列A + B + C,类型3:列A + C + D ......

接下来应该看起来像:

Type1 Type 2 文件名A文件名D. 文件名B文件名E. 文件名C文件名F ...

为了在eahc个人类型上使用不同的方法,那么我在一个“列”下有相似类型的数据结构

我尝试使用我发现的一个函数,它可用于已经“干净”的数据:

load_data <- function(path) { 
  files <- dir(path, pattern = '\\.csv', full.names = TRUE)
  tables <- lapply(files, read.csv("", nrows=1, header=TRUE, sep=","))
  do.call(rbind, tables)
}

identifier <- load_data("path")

由于数据非常大,我认为这将是最好的方式。

我可以想到的另一个解决方案是为每个文件创建单个数据帧,并将它们放在一个列表中,然后根据索引的数量进行过滤?

非常感谢你的帮助,

BR

1 个答案:

答案 0 :(得分:0)

好吧所以我想办法做到这一点,但它真的很慢:

path <- "path"
name_list <- dir(path)
df <- data.frame()
i <- 1
for(i in 1:length(name_list)){
  ident = dim(read.csv(paste(path,name_list[i], sep ="/"), nrows=2, header=TRUE, sep=","))
  df[i,1] <- cbind(name_list[i])
  df[i,2] <- cbind(ident[2])
}

也许可能有apply函数的解决方法?