我在具有不同後綴的文件夾中有多個.csv文件。例如:基於數據框後綴的動態列創建
Data_Software
Data_Hardware
Data_Manufacturing ....
&類似許多其他.csv文件。我想在這些數據集的每一箇中創建一個新的列,例如「type」,它將包含相應文件的後綴。 Data_Software中的類型列的所有觀察結果應該說軟件,Data_Hardware應該有硬件。
有人可以幫忙嗎?
我在具有不同後綴的文件夾中有多個.csv文件。例如:基於數據框後綴的動態列創建
Data_Software
Data_Hardware
Data_Manufacturing ....
&類似許多其他.csv文件。我想在這些數據集的每一箇中創建一個新的列,例如「type」,它將包含相應文件的後綴。 Data_Software中的類型列的所有觀察結果應該說軟件,Data_Hardware應該有硬件。
有人可以幫忙嗎?
雖然我不會建議,我可能會做是這樣的:
library(data.table) # need for fread and :=
# Get a list of all files in the directory
my_dir <- "my_path_here"
FILES <- list.files(path = my_dir, pattern="*.csv$", full.names = TRUE, recursive = FALSE)
# Read every file
lapply(FILES, function(x) { assign(gsub(paste0(my_dir,"/|\\.csv$|Data_"),"",x),fread(x, header = T)[, Type := gsub(paste0(my_dir,"/|\\.csv$|Data_"),"",x)], envir = .GlobalEnv)})
這會爲每個CSV表 - 表被命名爲相同的名稱文件,剝離擴展,路徑和Data_
。它還會創建一個表格名稱爲
試試這個,對不起,認爲他們是在您的環境data.frames,這種情況並非如此,隨意忽略/修改建議:
# Data frames in your environment
Data_Tom <- iris
Data_Dick <- iris
Data_Harry <- iris
# Get the names of the objects
objs <- ls(pattern = "Data_")
# Add the suffix as a the column
objs <- lapply(objs,
function(x){
type <- gsub("Data_", "", x)
df <- get(x)
cbind(df, Type = type)
})
# Combine them together, you might not need this
combine <- do.call(rbind, objs)
如何導入數據?你可能想嘗試:'df1 $ type <-unlist(lapply(strsplit(df1 $ firstColumn,split =「_」),function(x)x [[2]]))';其中'df1'是導入爲'data.frame'的文件之一,列名爲'firstColumn'。 – Abdou