首页 > 解决方案 > R中所有csv文件的所有列的范围

问题描述

我有 300 个包含相同数据集的 csv 文件,我想计算所有 csv 文件中所有列的最小值和最大值(范围),并希望创建包含所有这些 csv 文件和所有列的最小值和最大值的最终表。我正在使用以下功能,无法弄清楚如何在循环中工作并开发最终表格。

kk <- Map(function(x) cbind(x,min=min(var[,x]),
                            max=max(var[,x])), as.list(names(var)))
data.frame(do.call(rbind,kk))

标签: r

解决方案


考虑构建一个数据框列表,其中包含所有数据集中每列的最小值和最大值:

# GET LIST OF CSV FILES
csv_files <- list.files(pattern=".csv")

df_list <- lapply(csv_files, function(f) {
    df <- read.csv(f)
    # BUILD LIST OF MIN AND MAX ACROSS ALL COLUMNS
    agg_list <- lapply(df, function(col) c(min(col), max(col)))
    # BIND AGGREGATES INTO A DATA FRAME
    min_max_df <- do.call(data.frame, agg_list)

    # RETURN UPDATE DF WITH TWO NEW COLUMNS
    transform(min_max_df, file_name = f, aggregate=c("min", "max"))
})

# CONCATENATE ALL DFs
final_df <- do.call(rbind, df_list)

推荐阅读