根据标题开头的位置将CSV读入R.

时间:2016-05-09 23:08:53

标签: r csv

我有大量的CSV文件。有些标题从第一行开始,其他标题从第3行开始,其他标题从第7行开始,依此类推。

标题看起来都一样,它们只是从不同文件的不同行开始。有没有办法有条件地read.csv文件开始在标题开始的地方?

例如,如果我知道标题都有第一列名称“office#”,我可以以某种方式指示R在第一次运行到“office#”字段时开始读取csv文件并将该行视为头?

1 个答案:

答案 0 :(得分:2)

根据@ user20650的建议,以下内容将返回行号向量,其中每个行号都是标题开头的行:

detect_header_line <- function(file_names, column_name) {
    header_begins <- NULL
    for(i in 1:length(file_names)){
      lines_read <- readLines(file_names[i], warn=F)
      header_begins[i] <- grep(column_name, lines_read)
    }

因此,读取给定目录的所有file_names,并将这些file_names与标题的第一个column_name一起传递给上述方法,无论标题从何处开始,都将有效读入所有文件:

# get all file_names of csv files 
file_names <- list.files(directory, pattern=".csv$")

# get beginning rows of each csv file
header_begins <- detect_header_line(file_names, 'column name')

# can now pass into a looped read.csv method with the skip option set as skip=header_begins[i]-1