[英]Editing multiple .csv files before reading into r
我的WD中有44個.csv文件,最終我將它們讀入r並綁定為一個大文件。 在此之前,我想對每個文件進行一些更改。 我想要:
我已經找到了有關問題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個
lapply
和data.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.