2017-09-06 4 views
3

j'avoir des données reveniez d'une base de données dans la clé: des paires de valeurs, telles que: année: 2012 discipline: « Chimie » sujet: « Chimie générale » Objet: général, organique et biochimie »R dplyr ou purrr group_by à la liste des vecteurs

incoming = tibble(field = c('year', 'discipline', 'subject', 'subject'), 
setting = c(2012, 'Chemistry', 'General Chemistry', 'General, Organic, and Biochemistry')) 

Je voudrais group_by la clé, et créer une liste avec des valeurs = un vecteur de toutes les valeurs de ce groupe, telles que:

$year = 2012 
$discipline = 'Chemistry' 
$subject = c('General Chemistry', 'General, Organic, and Biochemistry') 

Je sais Je pourrais coller() et collaps e, disons, une chaîne | -sparée, puis la décomposons ... mais je pense qu'il y a probablement une fonction propre qui peut le faire en une seule fois. Suggestions?

Je pense qu'il sera quelque chose comme ça, mais je ne suis pas sûr de ce que de mettre à la fin du tuyau:

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

Répondre

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

Si vous recevez plusieurs groupes à un temps de la base de données, puis il devient un peu plus compliqué.