我在具有不同后缀的文件夹中有多个.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