繁体   English   中英

将数据拆分为命名向量

[英]Split data into named vectors

我有一个这样的数据框:

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 

我们可以在从 '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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM