R dplyr 或 purrr group_by 到向量列表
R dplyr or purrr group_by to list of vectors
我有来自数据库的 key:value 对数据,例如:
year:2012
纪律:'Chemistry'
主题:'General Chemistry'
主题:'General, Organic, and Biochemistry'
incoming = tibble(field = c('year', 'discipline', 'subject', 'subject'),
setting = c(2012, 'Chemistry', 'General Chemistry', 'General, Organic, and Biochemistry'))
我想 group_by 键,并创建一个列表,其值 = 该组中所有值的向量,例如:
$year = 2012
$discipline = 'Chemistry'
$subject = c('General Chemistry', 'General, Organic, and Biochemistry')
我知道我可以 paste() 并将它们折叠成一个以 | 分隔的字符串,然后再将其分开……但我认为可能有一个简洁的函数可以一步完成。建议?
我想它会是这样的,但我不确定在管道的末端放什么:
processed = incoming %>%
group_by(field) %>%
awesome_listmaker_function()
split(incoming$setting, incoming$field)
# $discipline
# [1] "Chemistry"
#
# $subject
# [1] "General Chemistry" "General, Organic, and Biochemistry"
#
# $year
# [1] "2012"
如果您一次从数据库接收多个组,那么它会变得有点复杂。
我有来自数据库的 key:value 对数据,例如: year:2012 纪律:'Chemistry' 主题:'General Chemistry' 主题:'General, Organic, and Biochemistry'
incoming = tibble(field = c('year', 'discipline', 'subject', 'subject'),
setting = c(2012, 'Chemistry', 'General Chemistry', 'General, Organic, and Biochemistry'))
我想 group_by 键,并创建一个列表,其值 = 该组中所有值的向量,例如:
$year = 2012
$discipline = 'Chemistry'
$subject = c('General Chemistry', 'General, Organic, and Biochemistry')
我知道我可以 paste() 并将它们折叠成一个以 | 分隔的字符串,然后再将其分开……但我认为可能有一个简洁的函数可以一步完成。建议?
我想它会是这样的,但我不确定在管道的末端放什么:
processed = incoming %>%
group_by(field) %>%
awesome_listmaker_function()
split(incoming$setting, incoming$field)
# $discipline
# [1] "Chemistry"
#
# $subject
# [1] "General Chemistry" "General, Organic, and Biochemistry"
#
# $year
# [1] "2012"
如果您一次从数据库接收多个组,那么它会变得有点复杂。