Это продолжение моего последнего вопроса ( Переплет большого списка данных после того, как я провел некоторую очистку данных в списке ).Я стал умнее, а первый вопрос запутался.
У меня есть 43 xlsx файла, которые я загрузил в список в R:
file.list <- list.files(recursive=T,pattern='*.xlsx')
dat = lapply(file.list, function(i){
x = read_xlsx(i, sheet=1, col_names = T)
# Create column with file name
x$file = i
# Return data
x
})
Затем я добавил несколько имен столбцов:
my_names <- c("ID", "UDLIGNNR","BILAGNR", "AKT", "BA",
"IART", "HTRANS", "DTRANS", "BELOB", "REGD",
"BOGFD", "VALORD", "UDLIGND",
"UÅ", "AFSTEMNGL", "NRBASIS","FIBILAG", "FILE")
dat <- lapply(dat, setNames, my_names)
Затем я удалил некоторыеколонки:
dat <- lapply(dat, function(x) { x["UÅ"] <- NULL; x })
dat <- lapply(dat, function(x) { x["FIBILAG"] <- NULL; x })
Мне не нужно их удалять, но когда я пытался объединить кадры данных, я продолжал получать сообщения об их классе.Поэтому я просто удалил их.
Затем я изменяю все свои столбцы на символы.Я немного новичок в R, так что я знаю, что этот код не очень сексуален, и вы, вероятно, могли бы сделать цикл или только одну функцию для этого.Но вот что я сделал:
dat <- lapply(dat, function(x) { x["ID"] <- as.character(x["ID"]); x })
[Я сделал то же самое для всех столбцов]
А потом я иду и связываю данные.
df <- rbindlist(dat)
РЕДАКТИРОВАТЬ:
Я обнаружил, что проблема не в моих методах привязки (спасибо за ваш вклад в это).Я удалил часть о методах привязки.
Проблема заключается в том, как я изменяю типы столбцов в моих столбцах в моих фреймах данных в списке.
Я также пробовал:
dat <- lapply(dat, function(x) { x[,"ID"] <- as.character(x[,"ID"]); x })
Я добавил запятую перед "ID".Это не помогло.Я чувствую, что мне нужно использовать unlist, но я не уверен, как использовать это здесь?