JSONを3列のdata.frameに正しく変換しようとしています。JSONを2列以上のdata.frameに変換する
これは私がこれはdata.frame
# my solution
my_data <- data.frame(fruit = do.call(c, my_data),
bag_number = rep(1:length(my_data),
sapply(my_data, length)))
# how it looks
my_data
> my_data
fruit bag_number
Bag 11 bananas 1
Bag 12 oranges 1
Bag 13 1 1
Bag 14 2 1
Bag 21 bananas 2
Bag 22 oranges 2
Bag 23 apples 2
Bag 24 3 2
Bag 25 4 2
Bag 26 5 2
を作成するために、私の解決策である
# this return an error about "arguments imply differing number of rows: 2, 3"
my_data <- as.data.frame(my_data)
> my_data <- as.data.frame(my_data)
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 2, 3
data.frameにそれを変換しようとする私のデータの簡素化
# simplification of my real data
my_data <- '{"Bag 1": [["bananas", 1], ["oranges", 2]],"Bag 2": [["bananas", 3], ["oranges", 4], ["apples", 5]]}'
library(jsonlite)
my_data <- fromJSON(my_data)
> my_data
$`Bag 1`
[,1] [,2]
[1,] "bananas" "1"
[2,] "oranges" "2"
$`Bag 2`
[,1] [,2]
[1,] "bananas" "3"
[2,] "oranges" "4"
[3,] "apples" "5"
です
しかし私の考えは、私がしたいときにmy_data[a:b,1]
をやっているような問題を避けるために、こういうものを得ることです。 ggplot2などを使用します。/tidyverseバージョン
fruit | quantity | bag_number
oranges | 2 | 1
bananas | 1 | 1
oranges | 4 | 2
bananas | 3 | 2
apples | 5 | 2
サンプルデータセットでは初期出力が生成されません。代わりに、リストのネストされたリストを生成します。リストのリストは非常に扱いにくいものです。私は 'rjson :: fromJSON'を使用しています。 – jdobres
ありがとう、はい、今変更しました – pachamaltese