将多个特定的 csv 文件导入并绑定到 R
Importing and binding multiple and specific csv files into R
我想在一个 R 文件中导入和绑定名为 "number.CSV"(例如 3437.CSV)的特定 csv 文件,这些文件与其他 csv 文件放在一个文件夹中我不想导入。
我怎样才能 select 只有我感兴趣的?
我得到了我需要的所有 csv 文件的列表,在下一栏中有一些。
CODE
49002
47001
64002
84008
46003
45001
55008
79005
84014
84009
45003
45005
51001
55012
67005
19004
7003
55023
55003
76004
21013
我有 364 个 csv 文件要读取和绑定。
n.b。我无法 select 我的文件夹中的所有“***.csv”文件,因为我有其他不需要的文件。
谢谢
我不知道您是否可以从 .CSV 文件中做到这一点。您可以做的是打开所有数据,然后使用命令 cbind
。
例如:
data1 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
data2 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
data3 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
然后:
df <- cbind(data1$Col1, data2$col3...)
其中 col
是您想要的列的名称。
您可以遍历感兴趣的 CSV 文件列表,读入每个文件,并将其绑定到一个公共数据框:
path <- "path/to/folder/"
ROOT <- c("49002", "47001", "21013")
files <- paste0(path, ROOT)
sapply(files, bindFile, var2=all_files_df)
bindFile <- function(x, all_df) {
df <- read.csv(x)
all_df <- rbind(df, all_df)
}
只需用数字代码制作文件名即可:
filenames = paste(code, 'csv', sep = '.')
# [1] "49002.csv" "47001.csv" "64002.csv" …
您可能还需要指定文件的完整路径:
directory = '/example/path'
filenames = file.path(directory, filenames)
# [1] "/example/path/49002.csv" "/example/path/47001.csv" "/example/path/64002.csv" …
现在您可以一次性将它们读入 R 中:
data = lapply(filenames, read.csv)
或者,如果您的 CSV 文件没有 headers 列(这种情况,尤其是当文件的行包含不同数量的项目时!)
data = lapply(filenames, read.csv, header = FALSE)
这将为您提供 list
个 data.frame
。如果要将它们全部绑定为一个 table,请使用
data = do.call(rbind, data)
我想在一个 R 文件中导入和绑定名为 "number.CSV"(例如 3437.CSV)的特定 csv 文件,这些文件与其他 csv 文件放在一个文件夹中我不想导入。
我怎样才能 select 只有我感兴趣的?
我得到了我需要的所有 csv 文件的列表,在下一栏中有一些。
CODE
49002
47001
64002
84008
46003
45001
55008
79005
84014
84009
45003
45005
51001
55012
67005
19004
7003
55023
55003
76004
21013
我有 364 个 csv 文件要读取和绑定。
n.b。我无法 select 我的文件夹中的所有“***.csv”文件,因为我有其他不需要的文件。
谢谢
我不知道您是否可以从 .CSV 文件中做到这一点。您可以做的是打开所有数据,然后使用命令 cbind
。
例如:
data1 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
data2 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
data3 <- read.table("~/YOUR/DATA", quote="\"", comment.char="")
然后:
df <- cbind(data1$Col1, data2$col3...)
其中 col
是您想要的列的名称。
您可以遍历感兴趣的 CSV 文件列表,读入每个文件,并将其绑定到一个公共数据框:
path <- "path/to/folder/"
ROOT <- c("49002", "47001", "21013")
files <- paste0(path, ROOT)
sapply(files, bindFile, var2=all_files_df)
bindFile <- function(x, all_df) {
df <- read.csv(x)
all_df <- rbind(df, all_df)
}
只需用数字代码制作文件名即可:
filenames = paste(code, 'csv', sep = '.')
# [1] "49002.csv" "47001.csv" "64002.csv" …
您可能还需要指定文件的完整路径:
directory = '/example/path'
filenames = file.path(directory, filenames)
# [1] "/example/path/49002.csv" "/example/path/47001.csv" "/example/path/64002.csv" …
现在您可以一次性将它们读入 R 中:
data = lapply(filenames, read.csv)
或者,如果您的 CSV 文件没有 headers 列(这种情况,尤其是当文件的行包含不同数量的项目时!)
data = lapply(filenames, read.csv, header = FALSE)
这将为您提供 list
个 data.frame
。如果要将它们全部绑定为一个 table,请使用
data = do.call(rbind, data)