将嵌套数据框扩展为父

时间:2018-06-15 19:55:10

标签: r dataframe dplyr tidyr

我有一个数据帧嵌套在我从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

2 个答案:

答案 0 :(得分:3)

我们可以循环'personalInfo',将NULL的{​​{1}}元素更改为list并将其转换为包含3列的真实数据集

NA

答案 1 :(得分:1)

虽然@ akrun的答案可能更实用,可能是整理数据的方法,但我认为这个输出更接近你描述的内容。

我创建了一个新的环境,我在其中放置了data.frame的内容,在那里我将所有有问题的列的内容列入所述环境,最后我将它们全部包回{{1 }}

我使用data.frame的奇怪黑客,因为cbind对列表列很烦。然而,使用as.data.frame可以正常工作。

tibble::as_tibble