Произвольная выборка нескольких кадров данных по строкам в папке с использованием R - PullRequest
0 голосов
/ 27 января 2020

Извините, я очень новичок в программировании, поэтому мне нужна вся помощь, которую я могу получить. Я использую R, и передо мной стоит задача:

У меня есть папка из 40 файлов в .csv. все они имеют одинаковый заголовок и одинаковое количество (131) столбцов (или элементов), но каждый из них имеет разные строки (от 2000 до 10000 строк).

Из-за вычислительных ограничений: я хочу подгруппировать каждый файл / данные фрейм в папке, произнесите случайную выборку 300 строк из каждого фрейма данных и примените эту случайную выборку строк ко всем файлам в папке.

В конце я хочу объединить все выбранные кадры данных в один кадр данных и записать файл .csv.

Мои идеи:

- найти путь к папке

folder.path<-getwd()

прочитать все файлы csv

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

здесь он облажался, так как я помещаю «список» в место, ожидающее фрейм данных.

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

, поэтому я застрял, и, очевидно, я Я не разобрался с проблемами с заголовками: мне нужно сохранить только один набор заголовков для окончательного фрейма данных, а ручная ввод 131 имени столбца немного самоубийственно ...

Заранее спасибо, ребята

1 Ответ

0 голосов
/ 27 января 2020

Сначала сэмплируйте данные:

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

Затем используйте rbind внутри do.call, чтобы связать все данные, обратите внимание, что это будет работать, только если все кадры данных имеют одинаковое число столбцов, а также одинаковые имена столбцов:

 data <- do.call("rbind", listdf)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...