R импортировать несколько файлов CSV - PullRequest
0 голосов
/ 13 июня 2018

Я хочу импортировать несколько файлов TSV (да: T SV) в R.

Чтение одного файла с выбором пространственных столбцов работает хорошо, используя:

data00<-read.csv(file = '/Volumes/2018/06_abteilungen/bi/analytics/tools/adobe/adobe_analytics/adobe_analytics_api_rohdaten/api_via_data_feed_auf_ftp/beispiel_datenexporte_data_feed/01sssamsung4de_20180501-000000.tsv',
                 sep ="\t",
             fill = TRUE,
             quote='', 
             header = FALSE 
)[ ,c(287, 288, 289, 290, 291, 292, 293, 304, 370, 661, 662, 812, 813,     994, 995, 1002)]

Теперь я хочу импортировать несколько файлов и объединить их в один фрейм данных:

setwd('/Volumes/2018/06_abteilungen/bi/analytics/tools/adobe/adobe_analytics/adobe_analytics_api_rohdaten/api_via_data_feed_auf_ftp/beispiel_datenexporte_data_feed/import_r')

temp <- list.files(pattern="*.tsv")

test_data <- lapply(temp, read.csv,
sep ="\t",
fill = TRUE,
quote='', 
header = FALSE 
)[ ,c(287, 288, 289, 290, 291, 292, 293, 304, 370, 661, 662, 812, 813, 994, 995, 1002)]

Последний запрос дает мне исключение и не работает: Fehler in lapply (temp, read.csv, sep= "\ t", fill = TRUE, quote = "", header = FALSE) [,: falsche Anzahl von Dimensionen (перевод: неверное количество измерений)

Когда я беру все столбцы, это работает:

test_data <- lapply(temp, read.csv,
sep ="\t",
fill = TRUE,
quote='', 
header = FALSE 
)

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Трудно сказать без выборочных данных, но я считаю, что вам сначала нужно «объединить» свои импортированные списки:

dplyr решение:

library(dplyr)
test_data <- lapply(temp, read.csv,
                    sep ="\t",
                    fill = TRUE,
                    quote='', 
                    header = FALSE 
                    ) %>%  
  bind_rows() %>%
  select( c(287, 288, 289, 290, 291, 292, 293, 304, 370, 661, 662, 812, 813, 994, 995, 1002) )
0 голосов
/ 13 июня 2018

Вы индексируете список фреймов данных, а не сами фреймы данных.Попробуйте:

test_data <- lapply(temp,function(x){
  read.csv(file = x,
                 sep ="\t",
                 fill = TRUE,
                 quote='', 
                 header = FALSE 
  )[ ,c(287, 288, 289, 290, 291, 292, 293, 304, 370, 661, 662, 812, 813,994, 995, 1002)]
}
)
...