我的WD中有44个.csv文件,我最终将读入r并绑定到一个大文件中。在我这样做之前,我想对每个文件进行一些更改。我想:
我已经在问题1的gsub上找到了一些信息,但还不足以让我到达我想去的地方。至于2),似乎这应该很简单,但我找不到任何在线解决方案。
非常感谢!
答案 0 :(得分:1)
这可能会帮助您获得所需的输出。
# 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)
答案 1 :(得分:0)
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&#39; s(作为data.table对象),然后对它们执行选择10列和名称更改。
当然,通过fwrite()
,您可以随时将其信息发送回csv。
并且仅在每个csv的列具有相同的位置和名称时使用,以便仅保留前面提到的前10个
lapply
和data.table
的组合可以创造奇迹。特别是:
rbindlist(lapply(list.files("path/to/the/folder/with/csvs"),fread),use.names=TRUE, fill=FALSE)
将解决您的大部分数据导入问题。