簡體   English   中英

將多個 CSV 文件導入 R 並將前兩行合並為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM