我有一个数据帧嵌套在我从Mongo获得的数据框中。行数匹配,以便在查看时看起来像典型的数据帧。我的问题是,如何将嵌套数据框扩展到父级,以便我可以运行dplyr选择?请参阅下面的布局
'data.frame': 10 obs. of 2 variables:
$ _id : int 1551 1033 1061 1262 1032 1896 1080 1099 1679 1690
$ personalInfo:'data.frame': 10 obs. of 2 variables:
..$ FirstName :List of 10
.. ..$ : chr "Jack"
.. ..$ : chr "Yogesh"
.. ..$ : chr "Steven"
.. ..$ : chr "Richard"
.. ..$ : chr "Thomas"
.. ..$ : chr "Craig"
.. ..$ : chr "David"
.. ..$ : chr "Aman"
.. ..$ : chr "Frank"
.. ..$ : chr "Robert"
..$ MiddleName :List of 10
.. ..$ : chr "B"
.. ..$ : NULL
.. ..$ : chr "J"
.. ..$ : chr "I"
.. ..$ : chr "E"
.. ..$ : chr "A"
.. ..$ : chr "R"
.. ..$ : NULL
.. ..$ : chr "J"
.. ..$ : chr "E"
根据建议,这里是重建数据的方法
id <- c(1551, 1033, 1061, 1262, 1032, 1896, 1080, 1099, 1679, 1690)
fname <- list("Jack","Yogesh","Steven","Richard","Thomas","Craig","David","Aman","Frank","Robert")
mname <- list("B",NULL,"J","I","E","A","R",NULL,"J","E")
sub <- as.data.frame(cbind(fname, mname))
master <- as.data.frame(id)
master$personalInfo <- sub
答案 0 :(得分:3)
我们可以循环'personalInfo',将NULL
的{{1}}元素更改为list
并将其转换为包含3列的真实数据集
NA
答案 1 :(得分:1)
虽然@ akrun的答案可能更实用,可能是整理数据的方法,但我认为这个输出更接近你描述的内容。
我创建了一个新的环境,我在其中放置了data.frame
的内容,在那里我将所有有问题的列的内容列入所述环境,最后我将它们全部包回{{1 }}
我使用data.frame
的奇怪黑客,因为cbind
对列表列很烦。然而,使用as.data.frame
可以正常工作。
tibble::as_tibble