R: Импортировать большое количество CSV и манипулировать ими (CSV не согласованы) - PullRequest
0 голосов
/ 02 ноября 2018

Итак, у меня есть большое количество CSV, которые помещаются в папку каждую неделю, а имена файлов и количество CSV меняется каждую неделю. Формат согласован, и манипуляции, которые мне нужно сделать, согласованы, но входные данные являются динамическими. Каждый CSV - это, по сути, таблица данных с уникальным идентификатором для пользователя, адресом электронной почты и двоичным кодом 1/0 для действия, выполненного этими пользователями. Имейте в виду, я довольно начинающий пользователь R, так что в основном я искал здесь для ответа

По сути, я надеюсь, что смогу загрузить все файлы CSV из этой папки, а затем динамически ссылаться на таблицы и каждый раз выполнять с ними единый набор действий. Независимо от того, есть ли 4 или 40 таблиц, мне нужно выполнить одно и то же действие.

Одним из необходимых действий является удаление столбца «Id» из каждой таблицы. Позже я использую электронную почту, чтобы присоединиться к таблице, а столбец идентификаторов бесполезен, поэтому проще просто отбросить столбец. Все эти CSV включают в себя этот столбец «Id», поэтому, по сути, мне просто нужно удалить идентификатор из всех таблиц.

Вот краткий предварительный просмотр и руководство, как я это делал.

#sample CSV with long file name '2018_October_10_regional_users_action_x'
   ID       email address       action x
1 365367   joe.schmoe@email.com    1
2 953164   fake.guy@email.com      0

#sample CSV with long file name '2018_October_10_regional_users_action_z'
   ID       email addresss      action z
1 798842   Jill.fake@email.com     0
2 100321   madeup.j@email.com      1

#code I've been using
setwd(choose.dir())
temp <- list.files(pattern = "\\.csv" # picking all the csv's from my folder

#I was inserting these all as separate objects, since that's the way I know 
# how to do what I need, but super manual
#list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))),
        read_csv), envir = .GlobalEnv)

# Manual way I was dropping my column
2018_October_10_regional_users_action_x <- select(2018_October_10_regional_users_action_x, -Id)
2018_October_10_regional_users_action_z <- select(2018_October_10_regional_users_action_z, -Id)

Есть еще несколько вещей, которые я делаю, но все они довольно просты и похожи по природе на этот столбец. Так что, если я смогу понять, как с этим справиться, я смогу применить его через остальную часть моего кода.

Я пытался использовать get и mget, чтобы поместить их в список, а затем создать функцию или цикл for, поскольку ручное получение имен объектов (которые обычно очень длинные) и построение этих функций по одной не масштабируются.

Кто-нибудь знает, как я могу: 1) динамически ссылаться на входные данные таблицы и 2) динамически ссылаться на них в функциях или формулах для выполнения некоторых основных манипуляций, аналогично тому, как я опускаю столбец, который я упоминал выше?

...