将多个和特定的csv文件导入并绑定到R中

时间:2016-06-22 10:52:18

标签: r csv import bind

我想在R文件中一起导入和绑定名为" number.CSV"的特定csv文件。 (例如3437.CSV)我在一个文件夹中包含了我不想导入的其他csv文件。

如何只选择我感兴趣的?

我有一个我需要的所有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。我无法选择所有" ***。csv"来自我文件夹的文件,因为我有其他我不需要的文件。

由于

3 个答案:

答案 0 :(得分:1)

您可以遍历感兴趣的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)
}

答案 1 :(得分:0)

我不知道你是否可以从.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&lt; - cbind(data1 $ Col1,data2 $ col3 ...)

其中col是您想要的列的名称。

答案 2 :(得分:0)

只需使用数字代码创建文件名:

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文件没有列标题(特别是当文件的行具有不同数量的项目时就是这种情况!)

data = lapply(filenames, read.csv, header = FALSE)

这将为您提供list data.frame个。如果要将它们全部绑定到一个表中,请使用

data = do.call(rbind, data)