我怎样才能把这个csv转换成D3-ready的json?
问题描述:
我正在构建了stacked column chart并试图找出改造我的CSV数据最彻底的方法:我怎样才能把这个csv转换成D3-ready的json?
data <- "apples oranges grapes
5 10 22
4 12 28
2 19 32
7 23 35
23 17 43"
fruits <- read.table(text=data, header=TRUE)
到多维JSON:
var dataset = [
//apples
[
{ x: 0, y: 5 },
{ x: 1, y: 4 },
{ x: 2, y: 2 },
{ x: 3, y: 7 },
{ x: 4, y: 23 }
], //oranges
[
{ x: 0, y: 10 },
{ x: 1, y: 12 },
{ x: 2, y: 19 },
{ x: 3, y: 23 },
{ x: 4, y: 17 }
], // grapes
[
{ x: 0, y: 22 },
{ x: 1, y: 28 },
{ x: 2, y: 32 },
{ x: 3, y: 35 },
{ x: 4, y: 43 }
]
];
我可以使用rson
“ s toJSON
得到一个基本的阵列:
{
"apples":[5,4,2,7,23],
"oranges":[10,12,19,23,17],
"grapes":[22,28,32,35,43]
}
但我遇到了麻烦绕包装如何我会将其转换为我实际需要的格式。如果更直接,我很乐意进行转换,但我想弄清楚如何在R中生成它。
答
我们可以创建一个list
的data.frame
s,通过cbind
将行序列与每列(使用Map
),请将list
的名称设置为'fruits'的列名,并使用从jsonlite
。
library(jsonlite)
toJSON(setNames(Map(function(x,y) data.frame(x,y),
list(1:nrow(fruits)), fruits), names(fruits)))
{"apples":
[
{"x":1,"y":5},
{"x":2,"y":4},
{"x":3,"y":2},
{"x":4,"y":7},
{"x":5,"y":23}
],"oranges":
[
{"x":1,"y":10},
{"x":2,"y":12},
{"x":3,"y":19},
{"x":4,"y":23},
{"x":5,"y":17}
],"grapes":
[
{"x":1,"y":22},
{"x":2,"y":28},
{"x":3,"y":32},
{"x":4,"y":35},
{"x":5,"y":43}
]}