Как прочитать несколько файлов .txt в Rstudio и создать фрейм данных?

Я хочу сделать рекомендательную систему. У меня есть 17770 файлов txt, каждый из которых представляет собой метаданные фильма, содержащие идентификатор пользователя и рейтинг.

dataset_capture Мне не удается импортировать данные в RStudio.

Я искал много методов для импорта нескольких данных, но в итоге все методы не работали.

По крайней мере, я пробовал 3 кода:

folderPath <- "D:/3rd Term/DataAnalysis/finalProject/dataSet/trainData/"
file_list <- list.files(path=folderPath, pattern="*.txt")    
dataSet <- 
  do.call("cbind", 
          lapply(file_list, 
                 function(x) 
                   read.table(paste(folderPath, x, sep=''), 
                              header = TRUE, 
                              stringsAsFactors = FALSE)))

========================================================================================
setwd("D:/3rd Term/DataAnalysis/finalProject/dataSet/trainData/")
files <-list.files()
data <- 0
for (f in files) {

  tempData = scan( f, what="character", sep = "")

  dataSet <- cbind(data,tempData)

} 

=========================================================================================

list_of_files <- list.files(path = "D:/3rd Term/DataAnalysis/finalProject/dataSet/trainData/", recursive = TRUE,
                            pattern = "\\.txt$", 
                            full.names = TRUE)

DT <- rbindlist(sapply(list_of_files, fread, simplify = FALSE),
                use.names = TRUE, idcol = "FileName", fill = TRUE)

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

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что каждый текстовый файл содержит идентификатор пользователя, рейтинг и дату (что не важно), которые имеют разделитель / разделитель запятой, например:

1488844,3,2005-09-06
822109,5,2005-05-13
885013,4,2005-10-19
30878,4,2005-12-26


person Jericho    schedule 16.09.2019    source источник
comment
Вопрос не имеет ничего общего с machine-learning или recommender-systems - не спамите нерелевантные теги (удалены).   -  person desertnaut    schedule 16.09.2019


Ответы (1)


Предполагая, что команда read.table работает с каждым файлом индивидуально:

folderPath <- "D:/3rd Term/DataAnalysis/finalProject/dataSet/trainData/"
file_list <- list.files(path=folderPath, pattern="*.txt", full.names = TRUE) 
library(dplyr)
df <- lapply(file_list, function(file) {
  read.table(file, 
             header = TRUE, 
             stringsAsFactors = FALSE))
}) %>% 
  bind_rows()

Согласно обновленному вопросу, вот минимальный воспроизводимый пример

Пример показывает, что начальную команду read.table также можно улучшить:

# create sample file to reproduce problem
writeLines("1488844,3,2005-09-06
822109,5,2005-05-13
885013,4,2005-10-19
30878,4,2005-12-26", "mv_00001.txt", useBytes = TRUE)

file_list <- list.files(path = ".", pattern="*.txt") 

# use the same file a couple of times to make setup more realistic
file_list <- c(file_list, file_list, file_list)

# initial answer with improved read-in command
library(dplyr)
df <- lapply(file_list, function(file) {
  read.csv(file, 
           header = FALSE, 
           col.names = c("userID", "rating", "date" ),
           stringsAsFactors = FALSE)
}) %>% 
  bind_rows()

# result
df
#>     userID rating       date
#> 1  1488844      3 2005-09-06
#> 2   822109      5 2005-05-13
#> 3   885013      4 2005-10-19
#> 4    30878      4 2005-12-26
#> 5  1488844      3 2005-09-06
#> 6   822109      5 2005-05-13
#> 7   885013      4 2005-10-19
#> 8    30878      4 2005-12-26
#> 9  1488844      3 2005-09-06
#> 10  822109      5 2005-05-13
#> 11  885013      4 2005-10-19
#> 12   30878      4 2005-12-26

Создано 17 сентября 2019 г. пакетом REPEX (v0.3.0)

person JBGruber    schedule 16.09.2019
comment
Ах, я забыл упомянуть, что каждый текстовый файл содержит идентификатор пользователя, рейтинг, а также дату (что не важно), которая имеет разделитель / разделитель запятой, например: 1488844,3,2005-09-06 822109,5,2005-05-13 885013,4,2005-10-19 30878,4,2005-12-26 - person Jericho; 16.09.2019
comment
Вы должны либо сами убедиться, что read.table работает с одним файлом, либо предоставить образцы данных или воспроизводимые настройки (файлы куда-то загружены). Понятия не имею, что мне делать с информацией в вашем комментарии. Насколько важен вопрос? - person JBGruber; 16.09.2019