我使用R来使用mongolite从mongo集合中读取一些数据。 理想情况下,我想创建一个数据框,但数据结构证明太难了(由于mongo doc中的嵌入对象)。
我将数据导入R后str()
为:
List of 9
$ :'data.frame': 4 obs. of 6 variables:
..$ QS : num 488 132 186 905
..$ datasection1:'data.frame': 4 obs. of 20 variables:
.. ..$ field1 : int 8 9 15 7
.. ..$ field2 : chr "WH" "WH" "WH" "WH"
..$ datasection2 :'data.frame': 4 obs. of 12 variables:
.. ..$ field3: int 8 9 15 7
.. ..$ field4 : chr "wh" "wh" "wh" "wh"
.. ..$ datasection2a:List of 4
.. .. ..$ :'data.frame': 3 obs. of 2 variables:
.. .. .. ..$ price: num 14.5 14 13
.. .. .. ..$ size : num 12.3 10.8 19.4
.. .. .. ..$ :'data.frame': 3 obs. of 2 variables:
.. .. .. ..$ price: num 5.6 5.5 5.2
.. .. .. ..$ size : num 23.6 66.7 21.1
.. .. ..$ :'data.frame': 3 obs. of 2 variables:
.. .. .. ..$ price: num 16 12 11.5
.. .. .. ..$ size : num 11.1 20.7 23.9
.. .. ..$ :'data.frame': 3 obs. of 2 variables:
.. .. .. ..$ size : num
等
如您所见,有多次嵌入列表和数据框。
我已使用dput(head(df,1))
获取:
list(structure(list(QS = c(488.4, 131.639655172414, 186.244444444444,
905.00726079825), datasection1 = structure(list(field1 = c(8L,
9L, 15L, 7L), field2 = c("WH", "WH", "WH", "WH"), datasection2 = structure(list(field3 = c(8L, 9L,
15L, 7L), field4 = c("wh", "wh", "wh", "wh"), datasection2a = list(structure(list(price = c(14.5,
14, 13), size = c(12.35, 10.82, 19.35)), .Names = c("price",
"size"), ....
我已经尝试了各种方法来解决这个问题(rbindlist,解压缩,取消列表)但是还没有设法产生合理的输出。请记住,这些尝试基于堆栈上的其他类似主题。我只使用了R几个月,所以上述功能对我来说是新的,所以我可能没有正确使用它。 理想情况下,我喜欢每个部分的数据框,并保留_id作为匹配的关键字。
如果我跑:
new_df=df[[1]]$datasection1
我得到了一个我想要的数据框,但仅限于第一个文档。 如果我尝试运行类似
的东西new_df=df$datasection1
代码运行但我得到一个空的数据框。