![](/img/trans.png)
[英]Converting multiple csv. files into multiple matrixs with original names in R
[英]R: Reading and writing multiple csv files into a loop then using original names for output
道歉,如果這看起來似乎很簡單,但是我在網站上的任何地方都找不到可行的答案。 我的數據采用csv格式,文件名是名稱和數字。 不像使用通用詞和增加數字的文件那樣簡單...我已經完全實現了我只想用一個文件做的事情,但是問題是有兩百個要做,所以每次更改名稱時間很繁瑣。
在此發布我的原始單批代碼,希望有人能夠緩解失敗搜索日益加劇的壓力。
# set workspace
getwd()
setwd(".../Desktop/R Workspace")
# bring in original file, skipping first four rows
Person_7<- read.csv("PersonRound7.csv", header=TRUE, skip=4)
# cut matrix down to 4 columns
Person7<- Person_7[,c(1,2,9,17)]
# give columns names
colnames(Person7) <- c("Time","Spare", "Distance","InPeriod")
# find the empty rows, create new subset. Take 3 rows away for empty lines.
nullrow <- (which(Person7$Spare == "Velocity"))-3
Person7 <- Person7[(1:nullrow), ]
#keep 3 needed columns from matrix
Person7<- Person7[,c(1,3,4)]
colnames(Person7) <- c("Time","Distance","InPeriod")
#convert distance and time columns to factors
options(digits=9)
Person7$Distance <- as.numeric(as.character(Person7$Distance))
Person7$Time <- as.numeric(as.character(Person7$Time))
#Create the differences column for distance
Person7$Diff <- c(0, diff(Person7$Distance))
...whole heap of other stuff...
#export Minutes to an external file
write.csv(Person7_maxs, ".../Desktop/GPS Minutes/Person7.csv")
因此,這三部分的問題如下:
我可以創建一個列表或向量來讀取文件名,但是每次都不能讀取每個數據幀(如果這樣做是一個很好的方法)。
整個代碼中的變量名將需要更改,而不僅僅是“ Person1”,“ Person2”,它們將更像“ Johnny1”,“ Lou23”。
需要使用原始名稱將每個結果數據幀導出到它自己的csv文件中。
采納所有建議-努力與此建議。 干杯!
考慮使用〜200個數據幀中的一個列表。 不需要單獨的命名對象泛洪全局環境(盡管list2env
仍顯示在下面)。 因此,使用lapply()
遍歷工作目錄的所有csv文件,然后將列表的每個元素簡單命名為file的基本名稱:
setwd(".../Desktop/R Workspace")
files <- list.files(path=getwd(), pattern=".csv")
# CREATE DATA FRAME LIST
dfList <- lapply(files, function(f) {
df <- read.csv(f, header=TRUE, skip=4)
df <- setNames(df[c(1,2,9,17)], c("Time","Spare","Distance","InPeriod"))
# ...same code referencing temp variable, df
write.csv(df_max, paste0(".../Desktop/GPS Minutes/", f))
return(df)
})
# NAME EACH ELEMENT TO CORRESPONDING FILE'S BASENAME
dfList <- setNames(dfList, gsub(".csv", "", files))
# REFERENCE A DATAFRAME WITH LIST INDEXING
str(dfList$PersonRound7) # PRINT STRUCTURE
View(dfList$PersonRound7) # VIEW DATA FRAME
dfList$PersonRound7$Time # OUTPUT ONE COLUMN
# OUTPUT ALL DFS TO SEPARATE OBJECTS (THOUGH NOT NEEDED)
list2env(dfList, envir = .GlobalEnv)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.