2016-09-22 2 views
0

は、私は1つの列の代わりに、tidyjsonを使用してネストされた値を1つの列に結合する方法は?

'{"name": {"first": "bob", "last": "jones"}, "age": 32}' %>% 
spread_values(
first.name = jstring("name", "first"), 
age = jnumber("age") 
) %>% 
unite(conc, c("first.name", "age"), sep=" ") 

を広めるには2つの値を参加したいしかし、私は列の位置を整数に解決する必要があり、次のエラーに

すべてのselect()の入力を有する保ちます。 ない以下: C(「first.name」、「年齢」)

私の欲求の出力は1新しい列「コンク」first.nameと年齢とそのすべての文字列を連結値の両方を置き換えるを持つことです。 "jones 32"など

最後の行を削除すると適切なdata.frameが得られ、first.nameとageにアクセスできます。

ヒント?

+0

希望の出力は何ですか? –

+0

'' {"名前":{"最初": "ボブ"、 "最後": "ジョーンズ"}、 "年齢":32} '%>%jsonlite :: fromJSON()%>%as.data.frame () 'は大丈夫です。 – alistaire

答えて

0

tbl_jsonオブジェクトがtbl_dfから継承しますが、彼らは時々作業が完了した後の解析きれいに再生し、tidyjsondplyrで、さらなる操作を行うには開始されません。その理由は、それに沿ってタグ付けする追加のメソッドと属性が本当に必要なくなったからです。

結果として、解析が完了したら、tbl_dfまたはas_data_frameを使用して、オブジェクトのコンポーネントtbl_jsonを削除することは良い習慣です。私はそれがより短いのでtbl_dfを好む。 devtools::install_github('jeremystan/tidyjson')

は、私はあなたが言及してエラーを再現することができませんでしたが、これは動作するようです:

私はgithubのから開発バージョンを使用しています

library(tidyjson) 
library(tidyr) 

"{\"name\": {\"first\": \"bob\", \"last\": \"jones\"}, \"age\": 32}" %>% 
spread_values(first.name = jstring("name","first") 
    , age = jnumber("age") 
) %>% 
tbl_df() %>% 
unite(conc, c("first.name", "age"), sep = " ") 

#> # A tibble: 1 x 2 
#> document.id conc 
#> *  <int> <chr> 
#> 1   1 bob 32 

その他の食品を考えたために文字列を連結することにあるとき、 paste()またはpaste0()mutateの範囲内で使用してください。 mutatetidyjsonでサポートされているため、JSONの解析中にパイプラインで使用できます。 は、summarizeで複数の行を集約する場合にも非常に役立ちます。

関連する問題