Как использовать map / lower и read_csv для импорта подмножества столбцов из нескольких файлов - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно импортировать несколько файлов в R. Из каждого файла мне нужно только подмножество столбцов. У меня есть рабочий код, который будет импортировать ВСЕ 97 столбцов из произвольного числа файлов, но не могу понять, как ограничить импорт только 4 нужными мне столбцами.

Я полагаюсь на тидиверс для многих своих функций. Версия R: 3.6.0

Я создал код, который импортирует ограниченные столбцы из ОДНОГО файла, но не может распространить его на все файлы.

#this code works correctly and imports all columns from multiple files
setwd('R:\\Data\\Raw Data Files')
files <- c('686960.csv','686962.csv','686963.csv','623056.csv','608910.csv','608911.csv','609248.csv','609246.csv', '722178.csv', '722177.csv', '756542.csv')

data <- files %>% 
map(read_csv) %>% 
  reduce(rbind)

#this code works correctly and imports 4 columns from 1 file
test <- test_file %>%  read_csv(
                col_types = 
                  cols_only(
                    'Member ID' = col_character()
                    ,'Patient Age' = col_character()
                    ,'Plan Payment Amount' = col_character()
                    ,'Check Date' = col_character()
                  )
                ,n_max = 10
)


#this code produces an error
setwd('R:\\Data\\Raw Data Files')
files <- c('686960.csv','686962.csv','686963.csv','623056.csv','608910.csv','608911.csv','609248.csv','609246.csv', '722178.csv', '722177.csv', '756542.csv')

data_test <- files %>% 
  map(read_csv(
    col_types = 
      cols_only(
        'Member ID' = col_character()
        ,'Patient Age' = col_character()
        ,'Plan Payment Amount' = col_character()
        ,'Check Date' = col_character()
      )
    ,n_max = 10
  )) %>% 
  reduce(rbind)

#Error in read_delimited(file, tokenizer, col_names = col_names, col_types = #col_types,  : 
#  argument "file" is missing, with no default

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...