簡體   English   中英

讀入R前先編輯多個.csv文件

[英]Editing multiple .csv files before reading into r

我的WD中有44個.csv文件,最終我將它們讀入r並綁定為一個大文件。 在此之前,我想對每個文件進行一些更改。 我想要:

  1. 更改某些文件中的某些列名
  2. 僅選擇每個文件的前10列

我已經找到了有關問題1)的gsub的一些信息,但還不足以使我到達想要的位置。 至於2),這似乎應該很簡單,但是我在網上找不到任何解決方案。

非常感謝!

這可能會為您提供所需的輸出。

# Set path to folder
  folder.path <- getwd()

# Get list of csv files in folder
  filenames <- list.files(folder.path, pattern = "*.csv", full.names = TRUE)

# Read all csv files in the folder and create a list of dataframes
  ldf <- lapply(filenames, read.csv)

# Select the first 10 columns in each dataframe in the list
  ldf <- lapply(ldf, subset, select = 1:10)

# Create a vector for the new column names
  new.col.names <- c("col1","col2","col3","col4","col5","col6","col7","col8","col9","col10")

# Assign the new column names to each dataframe in the list
  ldf <- lapply(ldf, setNames, new.col.names)

# Combine each dataframe in the list into a single dataframe
  df.final <- do.call("rbind", ldf)

readLines是您的朋友。 嘗試將其中每個作為單獨的向量導入,例如, my_csv<-readLines("path/to/your/csv")然后進行修改,最后將輸出保存如下:

out <- capture.output(my_csv)
cat(out, file="my_new.csv", sep="\n", append=F)

我強烈建議使用data.table包,尤其是fread()函數,該函數允許快速導入csv(作為data.table對象),然后對它們執行10列的選擇和名稱更改。 當然,可以通過fwrite()隨時將其信息發送回csv。

最后

並僅在每個csv的列具有相同的位置和名稱時使用,以便僅保留前面提到的前10個

lapplydata.table組合可以data.table奇跡。 尤其是:

rbindlist(lapply(list.files("path/to/the/folder/with/csvs"),fread),use.names=TRUE, fill=FALSE) 

將解決您的大多數數據導入問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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