Как мне преобразовать этот список в фрейм данных, где каждая строка представляет собой один объект - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть этот набор данных, идущий в '00, 000 строк, для краткости здесь показано только 3.

listy<-    list(ABR = list(ABN = list(text = "11000000948", .attrs = c(status = "ACT", 
    ABNStatusFromDate = "19991101")), EntityType = list(EntityTypeInd = "PUB", 
        EntityTypeText = "Australian Public Company"), MainEntity = list(
        NonIndividualName = list(NonIndividualNameText = "QBE INSURANCE (INTERNATIONAL) LTD", 
            .attrs = c(type = "MN")), BusinessAddress = list(AddressDetails = list(
            State = "NSW", Postcode = "2000"))), ASICNumber = list(
        text = "000000948", .attrs = c(ASICNumberType = "undetermined")), 
        GST = c(status = "ACT", GSTStatusFromDate = "20000701"), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "QBE INSURANCE (INTERNATIONAL) LIMITED", 
            .attrs = c(type = "TRD"))), .attrs = c(recordLastUpdatedDate = "20180216", 
        replaced = "N")), ABR = list(ABN = list(text = "11000002568", 
        .attrs = c(status = "CAN", ABNStatusFromDate = "20190501"
        )), EntityType = list(EntityTypeInd = "PRV", EntityTypeText = "Australian Private Company"), 
        MainEntity = list(NonIndividualName = list(NonIndividualNameText = "TOOHEYS PTY LIMITED", 
            .attrs = c(type = "MN")), BusinessAddress = list(AddressDetails = list(
            State = "NSW", Postcode = "2141"))), ASICNumber = list(
            text = "000002568", .attrs = c(ASICNumberType = "undetermined")), 
        GST = c(status = "CAN", GSTStatusFromDate = "20190502"), 
        .attrs = c(recordLastUpdatedDate = "20190531", replaced = "N"
        )), ABR = list(ABN = list(text = "11000016722", .attrs = c(status = "ACT", 
    ABNStatusFromDate = "20000303")), EntityType = list(EntityTypeInd = "PUB", 
        EntityTypeText = "Australian Public Company"), MainEntity = list(
        NonIndividualName = list(NonIndividualNameText = "INSURANCE AUSTRALIA LIMITED", 
            .attrs = c(type = "MN")), BusinessAddress = list(AddressDetails = list(
            State = "NSW", Postcode = "2000"))), ASICNumber = list(
        text = "000016722", .attrs = c(ASICNumberType = "undetermined")), 
        GST = c(status = "ACT", GSTStatusFromDate = "20000701"), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA INSURANCE LTD", 
            .attrs = c(type = "TRD"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA INSURANCE LTD-WORKERS COMPENSATION", 
            .attrs = c(type = "OTN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "\"\"Wesfarmers Federation Insurance\"\"", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Aim Dealer Services", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Aim Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Airport Buddy", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Assureme", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Australian Union Assurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Bitsy Cover", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "BuddyCover", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "C G U Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "C G U Professional Risks Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "C G U Trade Credit Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "C G U Travel Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "CGU Advantage", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU Cyber Defence", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "CGU Home Warranty Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "CGU Professional Risks Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU SAFETY AND RISK SERVICES", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU SELF INSURANCE SERVICES", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU Trade Credit Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "CGU Travel Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "CGU Workers Compensation", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Dairypol", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Grain Farmers Crop Insurance Agency", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Grainpol", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "IAG Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "IAG Re Australia", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "IAL.com.au", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Insurance 4 That", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Insurance for That", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "InsureLite", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Kwikinsure", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Lioncare", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Lumley Connect", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Lumley General", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Lumley General Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Lumley Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Lumley Marine & Logistics", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Lumley Online", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Lumley Retail Warranty", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Lumley Special Vehicles", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Metrorider", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "mobility.ai.", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "MOTOR TRADE DIRECT", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Motorassist", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Mums & Company", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "My.Place@Lumley", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA HOME SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA HOME SECURITY", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA HOME SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA INSURANCE", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA INSURANCE", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA SECURITY", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NRMA SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "NRMA SECURITY", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "NZI Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Pacific Indemnity", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Poncho Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Pounce Pet Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Prestige Boat Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Prestige Car Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Prestige Home Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Quick Insure", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Safer Journeys", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "SGI Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "SGI.com.au", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "SGIC", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "SGIC HOME SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "SGIC INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "SGIC SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "SGIO", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "SGIO HOME SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "SGIO INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "SGIO SECURITY", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Sharecover Enterprises", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Swann Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "THE BUZZ INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "THE BUZZ INSURANCE", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "THE BUZZ INSURANCE", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "THE BUZZ INSURANCE", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "The United Insurance Co", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "The United Insurance Company", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "VACC Insurance", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "VACC Rural Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Warrante-Link Warranty Solutions", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Warrantyassist", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "Wesfarmers Federation Insurance", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "WFI", .attrs = c(type = "BN"))), 
        OtherEntity = list(NonIndividualName = list(NonIndividualNameText = "'WFI'", 
            .attrs = c(type = "BN"))), OtherEntity = list(NonIndividualName = list(
            NonIndividualNameText = "Yourinsurancegroup", .attrs = c(type = "BN"))), 
        .attrs = c(recordLastUpdatedDate = "20190612", replaced = "N"
        )))

xmldf <- data.table::rbindlist(listy, fill = TRUE)

Я пытаюсь преобразовать это в фрейм данных, где каждая строка отображается в список элемент. В этом случае должно быть 3 (строки). Похоже, что ABR $ ABN $ .attrs (а в некоторых случаях ABR $ GST $ .attrs) форсирует фрейм данных в 2 строки после запуска этой функции в списке data.table :: rbindlist (list, fill = TRUE) , См. Рисунок для таблицы , показывающей ошибку пример:

Как я могу "сгладить"? два ряда в 1?

Edit1: в этом примере добавлено немного больше кода, чтобы упростить простую вырезку и запуск в вашем экземпляре R

1 Ответ

0 голосов
/ 14 февраля 2020

Вы можете попробовать это:

nlist <- lapply(listy,function(x) as.list(unlist(x)))
xmldf <- data.table::rbindlist(nlist, fill = TRUE)

unlist "сгладит" структуру, а as.list позволит обрабатывать ее как 1-рядный кадр данных.

I получил data.table с 3 строками и 203 столбцами. Первые несколько столбцов выглядят так:

      ABN.text ABN..attrs.status ABN..attrs.ABNStatusFromDate EntityType.EntityTypeInd
1: 11000000948               ACT                     19991101                      PUB
2: 11000002568               CAN                     20190501                      PRV
3: 11000016722               ACT                     20000303                      PUB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...