Извлечение заголовка списка из вложенного списка в качестве переменной - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть двухуровневый список, аналогичный описанному здесь, созданный при импорте файлов CSV.

Преобразование вложенного списка в фрейм данных

List of 21
Toronto
        Color: Blue
        Code: 7600
        Count: 50,000
Boston
    Color: Red
    Code: 800
    Count: 60,000
etc.

Я хочу генерировать матрицу для тепловой карты из этого. Я использовал следующее решение для преобразования списка в data.frame, а затем в матрицу.

library(data.table)
rbindlist(mylist, fill=TRUE)

Однако, поскольку он конвертируется, я хочу иметь столбец, который идентифицирует город, который является заголовком списка , Или в качестве альтернативы любое другое решение, которое позволило бы мне генерировать следующее.

City | Color | Code | Count
---------------------------

1 Ответ

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

1.Создать Воспроизводимый минимальный пример :

    ll <- list("Toronto" = list(
               Color= "Blue",
               Code= 7600,
               Count= 50000),
               "Boston" = list(
               Color= "Red",
               Code= 800,
               Count= 60000))

2. Вот решение:

    library(tidyverse)       
    data.frame(ID = names(unlist(ll)),
                values = unlist(ll),
                stringsAsFactors=FALSE) %>% 
        mutate(City = gsub("\\..*", "", ID),
               measure = gsub(".*\\.", "", ID)) %>% 
        select(-ID) %>% 
        pivot_wider(names_from = measure, values_from = values) %>% 
        mutate(Count = as.numeric(Count))

, которое возвращает:

    # A tibble: 2 x 4
      City    Color Code  Count
      <chr>   <fct> <fct> <fct>
    1 Toronto Blue  7600  50000
    2 Boston  Red   800   60000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...