在R forloop中添加Id列并填充CSV名称
我有很多CSV,我想在其中创建一个Id列,并用CSV的名称填充该Id列 这是当前B1.csv的一个示例:在R forloop中添加Id列并填充CSV名称,r,loops,csv,R,Loops,Csv,我有很多CSV,我想在其中创建一个Id列,并用CSV的名称填充该Id列 这是当前B1.csv的一个示例: Date_Time Temp 5/5/2020 11:00 89 5/5/2020 11:30 97 5/5/2020 12:00 108 我想看看: Id Date_Time Temp B1 5/5/2020 11:00 89 B1 5/5/2020 11:30
Date_Time Temp
5/5/2020 11:00 89
5/5/2020 11:30 97
5/5/2020 12:00 108
我想看看:
Id Date_Time Temp
B1 5/5/2020 11:00 89
B1 5/5/2020 11:30 97
B1 5/5/2020 12:00 108
代码:
temp=list.files(“C:\\Users\\kujld016\\**\\r”,
pattern=“*.csv”,full.name=T)
myfiles=lappy(temp,read.csv)
用于(我的文件){
myfiles[[i]]$Id已更新
library(readr)
library(dplyr)
infolder <- "C:\\Users\\***\\r"
outfolder <- "C:\\Users\\***\\out"
setwd(infolder)
csvfiles <- dir(path = infolder, pattern = "\\.csv$")
for (i in csvfiles) {
#tmpfile <- read_csv(i)
#tmpfile$filename <- i
#write_csv(tmpfile, file.path(outfolder, i)
print(file.path(outfolder, i))
}
库(readr)
图书馆(dplyr)
infoldermyfiles[[i]]$Id这很有效!但包含了整个文件路径。我需要在该文件路径中指定CSV名称,并将其删除。谢谢您可以删除路径-file\u name=sub(“.*/”,“”,temp)
中最后一个/
之前的所有内容,然后使用文件名[i]
。使用substr(温度[I],75,77),我能够更接近我需要的东西。但是,我的CSV编号为B1-B100,因此子字符串规格因数字而异。如果您发布一些文件路径示例,则我可以更有效地提供帮助。另一个选项是使用新的list.files
调用来补充现有的调用,可能是file\u names=list.files(“C:\\Users\\kujld016\\**\\r”,pattern=“*.csv”,full.name=FALSE)
M.Viking,目前我想将所有csv分开。只要我弄清楚Id列,代码中的“write.csv”部分就可以满足我的需要。您想覆盖原始文件..还是将它们放在单独的文件夹..或者更改名称,、filename.csv->filename\u mod.csv…我已将write.csv路径设置为将csv文件放在一个空文件夹中,这样原始文件就不会被更改。csv文件似乎会填充每个csv,但当我运行循环时,我会收到一个错误,说明没有此类文件或目录。我认为问题在于我正在工作目录之外提取和保存文件。
library(readr)
library(dplyr)
infolder <- "C:\\Users\\***\\r"
outfolder <- "C:\\Users\\***\\out"
setwd(infolder)
csvfiles <- dir(path = infolder, pattern = "\\.csv$")
for (i in csvfiles) {
#tmpfile <- read_csv(i)
#tmpfile$filename <- i
#write_csv(tmpfile, file.path(outfolder, i)
print(file.path(outfolder, i))
}