-1

我有一个类似于此处描述的两级列表,是通过导入 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
---------------------------
4

1 回答 1

0

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
于 2020-02-07T23:59:44.893 回答