【问题标题】:Loading multiple csv files at once and keep the column names unchanged一次加载多个 csv 文件并保持列名不变
【发布时间】:2019-06-13 19:32:28
【问题描述】:

我有一个包含不同 csv 文件的文件夹。下面是显示 csv 文件的图片。我想一次导入所有这些并一次性命名它们。另外,我想保持列名不变。

Here is what I tried:
#Loading the data
filenames <- list.files(path="C:/Users/Juste/Desktop/Customs Data",
                    pattern="Imports 201+.*csv")

filelist <- lapply(filenames, read.csv)

#assigning names to data.frames
names(filelist) <- paste0("Imports_201",2:length(filelist))

#note the invisible function keeps lapply from spitting out the data.frames to the console
invisible(lapply(names(filelist), function(x) assign(x,filelist[[x]],envir=.GlobalEnv)))

当我尝试这个时,它只导入前五个 csv 文件,它遗漏了“Imports 2017_anonymised”。列名也会改变格式。例如,列“Best country”变为“Best.country”。如何导入所有 csv 文件并保持列名不变?

【问题讨论】:

    标签: r csv


    【解决方案1】:

    您可以尝试purrr 包中的map()readr 包中的read_csv()(请注意,它带有下划线)。这样您的列名就不会改变。

    library(purrr)
    library(readr)
    map(filenames, read_csv)
    

    或者如果你想自动连接数据框使用

    map_df(filenames, read_csv)
    

    【讨论】:

      【解决方案2】:

      抱歉,我无法添加 cmets,因为我目前在这里没有足够的声望来添加。但是,我认为您的正则表达式可能有点不适合导入。试试pattern = "^Imports\\s+201\\d_anonymised\\.csv$"

      关于列名中的“.”,我相信默认情况下,R的核心数据导入命令会在有空格的地方添加这些。否则,每次要引用名称中带有空格的列时,都需要使用反引号。您可以尝试在read.csv() 函数中设置check.names = F,因为这是调用make.names() 在数据导入时清理列名的原因。输入 ?make.names 看看它在做什么。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2019-12-27
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 2011-04-15
        • 2021-02-04
        相关资源
        最近更新 更多