0
我从JSON创建了一个名为'inputData'的数据框。R中的数据转换,将列名添加到行中并从数据框中取消列表
我想要将数据转换为outputData样式以使用ggplot绘制图形。
我该如何转换数据看起来像这样?
inputData.
A B
1 a, 1, 2 b, 3, 4
2 c, 5, 6 d, 7, 8
outputData.
x y z w
1 a 1 2 A
2 c 5 6 A
3 b 3 4 B
4 d 7 8 B
- 添加 -
我追加真正的代码生成数据,为您提供方便。
> if(!require('rjson')){
install.packages('rjson')
library('rjson')
}
> rawData<-fromJSON('[{"id":"A", "list":[{"x":"a", "y":1, "z":2}, {"x":"c", "y":5, "z":6}]}, {"id":"B", "list":[{"x":"b", "y":3, "z":4}, {"x":"d", "y":7, "z":8}]}]')
> data1<- as.data.frame(sapply(rawData, function(x){
list(
id = x$id,
vlist = x$list
)
}))
> colnames(data1) <- sapply(data1, function(x){x$id})
> inputData <- as.data.frame(sapply(data1, function(x){ x$vlist }))
贵'Data1'实际上包含在它的词 “名单”?即,这是您的数据集Data1 < - data.frame(A = c(“list(x = 1,y = 2,z = 3)”,“list(x = 7,y = 8,z = 9) “),B = c(”list(x = 4,y = 5,z = 6)“,”list(x = 10,y = 11,z = 12)“))'? –
是的,JSON解析器为嵌套数组生成数据。 –
但是数据有点不同,inputData $ A是“[1] list(x = 1,y = 2,z = 3)list(x = 7,y = 8,z = 9)”在我的情况下,inputData $ A是“[[1]] [[1]] $ x [1] 1 [[1]] $ [1] 2 [[1] [2]] $ x [1] 7 [[2] $ y [1] 8 [[2] $ z [1] 9“)。 –