2016-04-01 10 views
1

からネストされたリストを返すには、そのように私が望む何R - 私はdata.table内のデータを持っているグループ化されたデータ

#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 

、グループごとにIDのネストされたリストを取得することです。私は、グループ名から名付けられた内部のリストを持っていたいと思います。おそらく例が明快さを提供します:

# 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(example $ 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プリントアウトネストされたベクトルを、文字列のように見えるかもしれませんが、V1listを入力し、カラム内の各セルがあるので、ベクトル。

+0

クールですが、これも機能します。ヒントをありがとう! – Tsaari

関連する問題