处理带有多个csv列表的两行标题

时间:2018-12-04 15:50:50

标签: r csv

我有2546个csv文件的列表,每个文件的列和行数不同。 已经将所有这些文件作为列表导入,如下所示:

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

由于每个csv都有两个标题行,并且需要两个信息都可以在末尾加入所有csv的行,因此想请您帮忙,因为我能够为其中一个做如下操作:

headers <- read.csv("filename.csv", nrows=2, header=FALSE) 

headers_names <- sapply(headers,paste,collapse="_") 

data <- read.csv(file="filename.csv", skip = 2, header=FALSE, stringsAsFactors = F)

names(data) <- headers_names

以下是其中一个数据集的示例:

                   TimeDate        Hostname   VCORE  X.1.5V    AVSB   X3VCC    X.5V   X.12V
1                  TimeDate        Hostname Voltage Voltage Voltage Voltage Voltage Voltage
2 2018-02-15T12:00:45+00:00 TL-1337H1DE2018   1.728    1.56   3.312    3.36    5.16   3.072
3 2018-02-15T12:01:45+00:00 TL-1337H1DE2018   1.728    1.56   3.312    3.36    5.16   3.072
4 2018-02-15T12:02:45+00:00 TL-1337H1DE2018   1.728    1.56   3.312    3.36    5.16   3.072
5 2018-02-15T12:03:45+00:00 TL-1337H1DE2018   1.728    1.56   3.312    3.36    5.16   3.072
6 2018-02-15T12:04:45+00:00 TL-1337H1DE2018   1.728    1.56   3.312    3.36    5.16   3.072

由于它是一个列表,因此将需要一个for循环,但是已经尝试了几次而没有成功。

1 个答案:

答案 0 :(得分:0)

将可以工作的一件事包装到以文件名fun1作为参数的函数fileN中。

fun1<-
function(fileN) {
    headers <- read.csv(fileN, nrows=2, header=FALSE, stringsAsFactors = FALSE) 

    headers_names <- sapply(headers,paste,collapse="_") 

    data <- read.csv(file=fileN, skip = 2, header=FALSE, stringsAsFactors = FALSE)

    names(data) <- headers_names

    return(data)
}

现在适用于temp中的所有文件名。

ans<-
lapply(temp, fun1)