[英]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 个命名向量并将它们存储在列表中? 理想情况下,列表的名称是Item1
和Item2
。 我的预期输出是:
# $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_split
和deframe
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.