Существует ли функция R для идентификации и изменения имен столбцов в рамках данных в одном и том же списке? - PullRequest
0 голосов
/ 11 февраля 2020

Я загружаю книгу Excel с данными за несколько лет, разделенными по годам на разные листы. Каждый лист содержит около 70 столбцов и имен столбцов.

К сожалению, некоторые столбцы имеют несколько разные имена для одних и тех же данных.

sheets <- excel_sheets(filename)
SheetList <- lapply(excel_sheets(filename), read_excel, path=filename)
names(SheetList)<- sheets 

, который загружает список из 13 элементов (фреймов данных), разделенных годом. Если я посмотрю на 2019 названий имен, я получу

colnames(SheetList[[1]])

[1] "Number"                                               
 [2] "Year-Round Vacancy"                       
 [3] "Premier Beds"                
 [4] "Total Year Round Beds"
.

и т. Д. По сравнению с 2013 г. именами

colnamesnames(SheetList[[6]]) 

[1] "Number"                                               
 [2] "Year-Round Vacancy"                       
 [3] "Premier Rooms"                
 [4] "Total Year Round Rooms"

... и т. Д.

В этих двух случаях эти столбцы имеют одинаковые данные, помеченные по-разному.

Я понимаю, что мог бы использовать str_replace_all для имен столбцов три и четыре, но было бы любопытно, если есть более элегантный способ выявления расхождений и переименования столбцов (где применимо)

1 Ответ

1 голос
/ 11 февраля 2020

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

column_names <- c('Number', 'Vacancy', 'Premier', 'Total')

names(Sheet1) <- column_names
names(Sheet2) <- column_names 
...

Я понимаю, что для 70+ столбцов это будет немного неудобного вектора, поэтому не уверен, что это поможет.

Вы также можете просто присвоить имена из одного кадра данных другому:

names(Sheet1) <- names(Sheet2)

Это будет синхронизировать c их.

...