繁体   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