2016-04-01 5 views
1

У меня есть данные в data.table, например, так:R - возвращает вложенный список из сгруппированных данных

#Load in example data 
library(jsonlite) 
library(data.table) 
json<-'[{"id":"a","group":"foo","value":2.7408},{"id":"b","group":"foo","value":6.5785},{"id":"c","group":"foo","value":5.4263},{"id":"d","group":"bar","value":5.2845},{"id":"e","group":"bar","value":4.1038},{"id":"f","group":"bar","value":3.7421},{"id":"g","group":"bar","value":2.7618},{"id":"h","group":"bar","value":3.7211},{"id":"i","group":"baz","value":4.1616},{"id":"j","group":"baz","value":3.8822}]' 
example<-data.table(fromJSON(json)) 
example 

id group value 
1: a foo 2.7408 
2: b foo 6.5785 
3: c foo 5.4263 
4: d bar 5.2845 
5: e bar 4.1038 
6: f bar 3.7421 
7: g bar 2.7618 
8: h bar 3.7211 
9: i baz 4.1616 
10: j baz 3.8822 

То, что я хотел бы, чтобы извлечь вложенный список идентификаторов для каждой группы. Я хотел бы иметь внутренние списки, названные из имени группы. Возможно, пример даст ясность:

# This is what I would like to accomplish programmatically. 
# Is there a data.table way to do this? How about plyr? 
# It seems like a pretty straightforward task, so I imagine 
# there is a method for this which I don't know about. 
foo<-example$id[example$group=='foo'] 
bar<-example$id[example$group=='bar'] 
baz<-example$id[example$group=='baz'] 
list(foo=foo,bar=bar,baz=baz) 

$foo 
[1] "a" "b" "c" 

$bar 
[1] "d" "e" "f" "g" "h" 

$baz 
[1] "i" "j" 

Заранее благодарим за любые предложения.

+0

Попробуйте 'split (пример $ id, example $ group)'. – nicola

+0

Отлично! Спасибо. У меня явно есть много функций, чтобы учиться. – Tsaari

ответ

1

Чтобы сохранить данные группы вложенными, вы добавить list:

> example[,.(list(id)),by=group] 
    group  V1 
1: foo  a,b,c 
2: bar d,e,f,g,h 
3: baz  i,j 

data.table распечатывает вложенных векторов с запятыми, так это может выглядеть как струна, но V1 имеет тип list и каждая ячейка в столбце вектор.

+0

Прохладный, это тоже работает. Спасибо за советы! – Tsaari

Смежные вопросы