【问题标题】:How do you create a named list from a grouped dataframe? [duplicate]如何从分组数据框中创建命名列表? [复制]
【发布时间】:2018-02-19 05:42:58
【问题描述】:

有几次,我需要将分组数据框的两列转换为一个列表,其中分组列成为列表的名称,非分组列的值成为元素。

例如,给定starwars 数据集,假设我们想按他们的家乡列出角色。

library(tidyverse)

starwars %>%
  select(homeworld, name) %>%
  group_by(homeworld)

#> # A tibble: 87 x 2
#> # Groups:   homeworld [49]
#>    homeworld               name
#>        <chr>              <chr>
#>  1  Tatooine     Luke Skywalker
#>  2  Tatooine              C-3PO
#>  3     Naboo              R2-D2
#>  4  Tatooine        Darth Vader
#>  5  Alderaan        Leia Organa
#>  6  Tatooine          Owen Lars
#>  7  Tatooine Beru Whitesun lars
#>  8  Tatooine              R5-D4
#>  9  Tatooine  Biggs Darklighter
#> 10   Stewjon     Obi-Wan Kenobi
#> # ... with 77 more rows

如何将其转换为以homeworld 为名称的列表?也就是说,对于上面的输出,我们会得到:

#> $Alderaan
#> [1] "Leia Organa"
#> 
#> $Naboo
#> [1] "R2-D2"
#> 
#> $Stewjon
#> [1] "Obi-Wan Kenobi"
#> 
#> $Tatooine
#> [1] "Luke Skywalker"     "C-3PO"              "Darth Vader"       
#> [4] "Owen Lars"          "Beru Whitesun lars" "R5-D4"             
#> [7] "Biggs Darklighter"

【问题讨论】:

  • split(name,homeworld) 在不整洁的世界中。我敢肯定有类似的东西。
  • split 完美——谢谢!

标签: r dplyr tidyverse purrr


【解决方案1】:

归功于@thelatemail,使用拆分:

split(df$name,df$homeworld)

输出:

$Alderaan
[1] "Leia Organa"

$Naboo
[1] "R2-D2"

$Stewjon
[1] "Obi-Wan Kenobi"

$Tatooine
[1] "Luke Skywalker"     "C-3PO"              "Darth Vader"       
[4] "Owen Lars"          "Beru Whitesun lars" "R5-D4"             
[7] "Biggs Darklighter" 

样本数据:

require(data.table)
df <- fread("homeworld,               name
              Tatooine,     Luke Skywalker
              Tatooine,              C-3PO
                 Naboo,              R2-D2
              Tatooine,        Darth Vader
              Alderaan,        Leia Organa
              Tatooine,          Owen Lars
              Tatooine, Beru Whitesun lars
              Tatooine,              R5-D4
              Tatooine,  Biggs Darklighter
               Stewjon,     Obi-Wan Kenobi")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多