Как я могу записать мои фреймы данных в CSV, пока они подмножество, используя цикл - PullRequest
1 голос
/ 11 мая 2019

После использования цикла For Loop для подмножества моих данных я бы хотел автоматически записывать .csv для каждого из моих фреймов данных. Это может произойти в моем цикле for или в отдельном цикле, я просто не знаю, как это сделать.

Я бы хотел, чтобы каждый CSV-файл был назван на основе имени фрейма данных.

for (i in FILENAME$COLUMN) {
  nam <- paste("NEW_FILENAME", i, sep = "_")
  assign(nam, FILENAME[
    FILENAME$COLUMN==i,])
}

Код, который я предоставил, подмножество данных и создает новые фреймы данных с именем

NEW_FILENAME_1
NEW_FILENAME_2
NEW_FILENAME_3
и т. д.

Изменение номера основано на записи, используемой для подмножества данных.

Мне нужна эта функция, потому что в моем наборе данных будут сотни подмножеств.

Как мне теперь написать CSV для каждого из них либо в текущем цикле for или с использованием нового цикла for.

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Если вы хотите просто записать файлы, вы можете использовать tidyverse решение. Пример использования mtcars набора данных:

library(tidyverse)

mtcars %>%
  group_by(gear, carb) %>%
  do(
    write_csv(., sprintf("new_mtcars_g%s_c%s.csv", .$gear[1], .$carb[1]))
  ) %>% 
  invisible()
0 голосов
/ 11 мая 2019

Попробуйте сделать это с семейством apply вместо этого с помощью split, который создаст список фреймов данных для каждого уникального значения COLUMN, которое у вас есть. Таким образом, вы можете создавать разные фреймы данных, а также записывать их в разные csv файлы только одной командой.

Например, с mapply вы можете сделать

mapply(function(x, y) 
 write.csv(x, paste0("path_of_file/NEW_FILENAME_", y, ".csv"), row.names = FALSE),
    split(FILENAME, FILENAME$COLUMN), seq_along(unique(FILENAME$COLUMN)))

Это работает с набором данных mtcars, где я создаю отдельный фрейм данных на основе столбца cyl 1013 *

mapply(function(x, y) 
   write.csv(x, paste0("NEW_FILENAME_", y, ".csv"), row.names = FALSE), 
      split(mtcars, mtcars$cyl), seq_along(unique(mtcars$cyl)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...