【问题标题】:Create a function that returns a data frame from CSV files?创建一个从 CSV 文件返回数据框的函数?
【发布时间】:2017-11-05 17:03:27
【问题描述】:

我正在尝试制作一个从 8 个不同的 CSV 文件输出数据帧的函数。它们都具有相同的变量和相同类型的数据。它们的唯一区别是年份。我试图写出这个函数,但我似乎无法让它工作。我在想一个 lapply woulf 工作,但我不知道如何合并它。

这些是说明: 编写一个名为 'air' 的函数,它接受一个 'year' 参数并返回一个包含该年份数据的 data.frame,禁止自动转换为因子。

path <- "C:/Users/Lacy Macc/Downloads/adviz/"
files <- list.files(path=path, pattern="*.csv")
for(y in files)
 air <- function(year){
   if (!exists(""))
     }
 }

【问题讨论】:

  • do.call(rbind, lapply(list.files(path = path, pattern = 'csv$'), read.csv)),尽管您可能希望根据您的说明将文件向量子集为您想要的那些。
  • 我是将它添加到函数中还是只是它自己的东西?
  • 该代码将读取path 文件夹中的所有文件并将它们组合成一个数据帧。但是根据说明,这不是您需要的,您只想读取并返回与正确年份对应的数据。您能否举例说明文件的命名方案以及与年份的对应关系?
  • @lacymacc5552 无论哪种方式。我通常单独使用它,因为我发现自己不会重读 CSV,但如果您愿意,可以将其放入函数中。
  • @Marius 这是 csv 格式的文件的样子.......................... ....... > 文件 [1] “ad_viz_plotval_data-2009.csv” “ad_viz_plotval_data-2010.csv” [3] “ad_viz_plotval_data-2011.csv” “ad_viz_plotval_data-2012.csv” [5] “ad_viz_plotval_data-2013 .csv" "ad_viz_plotval_data-2014.csv" [7] "ad_viz_plotval_data-2015.csv" "ad_viz_plotval_data-2016.csv"

标签: r function csv merge


【解决方案1】:

如果每个文件的文件名不同,您可能需要使用list.files 并搜索文件名以识别与年份匹配的文件名。但是使用固定的文件名方案,您需要做的就是在文件名的适当位置插入年份:

path <- "C:/Users/Lacy Macc/Downloads/adviz/"
year <- 2013
file_path <- paste0(path, "ad_viz_plotval_data-", year, ".csv")

我省略了如何将其转换为一年内需要的函数的全部细节,因为我怀疑这可能是一个家庭作业 Q。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2014-04-15
    • 2016-10-12
    相关资源
    最近更新 更多