![](/img/trans.png)
[英]How to combine CSV files in R and add the file name as a column header
[英]Import multiple CSV files into R and combine first two rows as the header column
我有大約 50 個 CSV 文件需要導入到 R 中,然后我想設置一個 header 行,這是每個文件中的前兩行數據。 舉個例子:
DATE FIRST LAST ID
(M/D/Y) NAME NAME
數據從第 3 行開始。我可以將所有文件作為自己獨特的 dataframe 導入
temp = list.files(pattern="*.csv")
list2env(
lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))),
read.csv), envir = .GlobalEnv)
但是如何更改該代碼以將前兩行組合為 header
我建議閱讀前兩行,制作您想要的列名,然后閱讀 rest,跳過前兩行。 這是一個文件的示例,位於文件路徑x
:
cnames = read.csv(x, nrow = 2)
cnames = sapply(cnames, paste, collapse = "")
data = read.csv(x, skip = 2, col.names = cnames)
我還強烈建議您將結果留在一個漂亮、易於使用的list
,而不是在您的環境中創建大約 50 個數據框。 我對此建議的推理在此處進行了詳細說明。 這可能看起來像這樣:
temp = list.files(pattern="*.csv")
data_list = list()
for(i in seq_along(temp)) {
cnames = read.csv(x, nrow = 2)
cnames = sapply(cnames, paste, collapse = "")
data_list[[i]] = read.csv(x, skip = 2, col.names = cnames)
}
names(data_list) = sub(".csv", "", basename(temp), fixed = TRUE)
# Then if you want to combine them all
complete_data = dplyr::bind_rows(data_list, .id = "source_file")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.