使用 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)
抱歉,我对编程还很陌生,所以我需要所有我能得到的帮助。 我正在使用 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)