首页 > 解决方案 > 在 R 中对多个数据帧进行汇总统计

问题描述

抱歉,如果这已在其他地方得到回答。我希望在 R 中跨多个数据帧计算和输出汇总统计信息。

对于上下文,我的数据存储在.txt每个主题的文件中 - 只有一列:1 个变量的 63 obs。我总共有 48 个文件对应于 48 个主题。

我将这些文件读入 Rstudio 并使用以下脚本创建了多个每个主题的数据框:

filenames <- gsub("\\.txt$","", list.files(pattern="\\.txt$"))             

for(i in filenames){
  assign(i, read.delim(paste(i,".txt", sep="")))
  }

数据帧的命名是例如001_fd, 002_fd ...

所以我希望做的是创建一个 for 循环来计算每个数据帧的摘要统计数据,然后将每个数据帧的结果输出到单个 csv 文件中。

这里的任何帮助将不胜感激

标签: rstatistics

解决方案


不希望对象名称以数字开头。您也没有提到汇总统计是什么意思,您到底想计算什么,我会计算meanmedian在这里,如果需要,您可以包括更多。

首先,使用获取列表中的所有数据框mget

list_df <- mget(ls(pattern = '\\d+_fd'))

使用lapply,您可以计算任何您想要的。假设您在每个数据框中都有x一个列作为列名,您可以这样做

output_df <- do.call(rbind, lapply(list_df, function(df) 
                     data.frame(mean = mean(df$x), med = median(df$x))))

或者purrr::map_df这使得这更短。

output_df <- purrr::map_df(list_df, 
            ~data.frame(mean = mean(.x$x), med = median(.x$x)))

将结果写入 csv。

write.csv(output_df, 'results.csv', row.names = FALSE)

推荐阅读