R - используя purr добавить столбцы на фрейм данных - PullRequest
0 голосов
/ 31 января 2020

Я хочу использовать purr для создания переменной года в моих наборах данных и объединить их вместе. Этот пример проиллюстрирует проблему и то, что я устал.

# files in the directory 
files <- paste0("data/file_year_", 2015:2019, ".txt")

# map
files <- paste0("data_", 2013:2019, ".csv")
lst1 <-  files %>%
           map(~ read_csv(.x) %>%
             mutate(year = str_extract(., "\\d{4}")))

Теперь список необходимо объединить в один фрейм данных.

dat1 <- bind_rows(lst1, .id = 'grp')

Однако при попытке создать список появляется следующая ошибка:

Error in mutate_(.data, .dots = compat_as_lazy_dots(...)) : 
  argument ".data" is missing, with no default
In addition: Warning message:
In stri_extract_first_regex(string, pattern, opts_regex = opts(pattern)) :
  argument is not an atomic vector; coercing 

Я пытался найти эту ошибку, но пока ничего не помогло. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Мы можем использовать map_df

library(tidyverse)
map_df(files,~read.csv(.x) %>% mutate(year = str_extract(.x, "\\d{4}")),.id = "grp")
0 голосов
/ 31 января 2020

Вы можете сделать это l oop с помощью data.table Вы также можете выполнить определенные c операции с каждым файлом, если хотите.

library(data.table)
lapply(list.files(pattern= paste0("data/file_year_", 2015:2016, ".txt")),
       function(x){
  your_files = fread(x)
  #your_files = somecode
})%>% rbindlist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...