使用 R 在文件夹中按行随机采样多个数据帧

Random Sampling multiple Dataframes by Rows in a folder using R

抱歉,我对编程还很陌生,所以我需要所有我能得到的帮助。 我正在使用 R,我面临如下任务:

我有一个包含 40 个文件的 .csv 文件夹。它们都具有相同的 header 和相同数量 (131) 的列(或特征),但每个都有不同的行(2000 到 10,000 行)。

由于计算限制:我想对文件夹中的每个 file/data 帧进行子集化,比如从每个数据帧中随机抽样 300 行,并将此随机行抽样应用于文件夹中的所有文件。

最后,我想将所有采样的dataframe合并成一个dataframe,写出一个.csv文件。

我的想法:

--查找文件夹路径

folder.path<-getwd()

读取所有 csv 文件

filenames <- list.files(folder.path, pattern = "*.csv", full.names = T) suppressPackageStartupMessages(library(dplyr)) listdf <- lapply(filenames, read.csv)

这里搞砸了,因为我将 "list" 放在需要数据框的地方。

listdf <- lapply(listdf, subset(sample_n(listdf, 300)))

所以我卡住了,显然我还没有解决 header 问题:我只需要为最终数据框保留一组 header,并手动输入 131 列名字有点自杀...

提前谢谢大家

首先,对数据进行采样:

 listdf <- lapply(listdf, FUN = function(i) sample_n(i, 300)) 

然后在do.call里面使用一个rbind来绑定所有的数据,注意只有当所有的dataframes有相同的列数以及相同的列时才会起作用姓名:

 data <- do.call("rbind", listdf)