R dplyr или purrr group_by в список векторов

У меня есть данные, поступающие из базы данных в парах ключ: значение, например: год: 2012 дисциплина: «Химия», предмет: «Общая химия», предмет: «Общие, органические и биохимические»

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')

Я знаю, что могу вставить () и свернуть их, скажем, в строку, разделенную |, а затем разбить ее на части ... но я полагаю, что, вероятно, есть аккуратная функция, которая может сделать это за один шаг. Предложения?

Думаю, это будет что-то вроде этого, но я не уверен, что поставить в конце трубы:

processed = incoming %>%
   group_by(field) %>%
   awesome_listmaker_function()

person Jon Harmon    schedule 06.09.2017    source источник


Ответы (1)


split(incoming$setting, incoming$field)
# $discipline
# [1] "Chemistry"
#
# $subject
# [1] "General Chemistry"                  "General, Organic, and Biochemistry"
#
# $year
# [1] "2012"

Если вы одновременно получаете несколько групп из базы данных, все становится немного сложнее.

person Nathan Werth    schedule 06.09.2017