【问题标题】:Split data into named vectors将数据拆分为命名向量
【发布时间】:2020-03-03 20:02:20
【问题描述】:

我有一个这样的数据框:

set.seed(123)
df <- data.frame(item = rep(c("Item1", "Item2"), c(3, 4)),
                 id = c(LETTERS[1:3], LETTERS[23:26]),
                 x = sample(7))

#    item id x
# 1 Item1  A 7
# 2 Item1  B 3
# 3 Item1  C 6
# 4 Item2  W 2
# 5 Item2  X 4
# 6 Item2  Y 5
# 7 Item2  Z 1

如何将数据拆分为 2 个命名向量并将它们存储在列表中?理想的列表名称是Item1Item2。我的预期输出是:

# $Item1
# A B C 
# 7 3 6 
# 
# $Item2
# W X Y Z 
# 2 4 5 1 

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    我们可以在从“x”和“id”列创建的命名向量上使用split

    with(df, split(setNames(x, id), item))
    #$Item1
    #A B C 
    #7 3 6 
    
    #$Item2
    #W X Y Z 
    #2 4 5 1 
    

    tidyverse 选项是 group_splitdeframe

    library(dplyr)
    library(purrr)
    library(tibble)
    df %>%
         group_split(item, keep = FALSE) %>%
         map(deframe)
    

    或者在dplyr的开发版中

    df %>%
        group_by(item) %>% 
        condense(new = deframe(cur_data())) %>% 
        pull(new)
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2011-03-20
      相关资源
      最近更新 更多