2017-05-31 59 views
0

我的WD中有44个.csv文件,我最终会读入r并绑定到一个大文件中。在我这样做之前,我想对每个文件进行一些更改。我想:在读入r之前编辑多个.csv文件

  1. 变化的一些文件
  2. 只选择每个文件

我发现GSUB上的问题1某些信息的前10列),但一些列名不足以让我得到我想要的地方。至于2),似乎这应该很简单,但我无法在网上找到任何解决方案。

非常感谢!

+1

只需阅读一个函数,让您选择列(所有列都可以限制行),例如'readr :: read_csv'。或者只是阅读它并将你不需要的内容集中在一起。 – alistaire

回答

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的快速进口(如data.table对象),然后对它们进行10列选择和名称变更。 当然通过fwrite()您可以随时将他们的信息发送回csv。

FINALLY

且仅当每个CSV的列具有相同的位置和名称,以便只保留前10,你上面

提到lapplydata.table可以组合使用做奇迹。特别是:

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

将解决大部分数据导入问题。

+0

谢谢!这确实做了我想要的某一点,但我意识到我还需要在其中添加一个带有文件名的列 - 已经完成了这项工作。 –

0

这可能会让你输出你正在寻找的东西。

# 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) 
+0

谢谢!这正是我所期待的。 –