Преобразование вложенного фрейма данных с различным количеством элементов

PMH спросил: 14 ноября 2017 в 07:34 в: r

У меня есть фрейм данных со столбцом вложенных фреймов данных с 1 или 2 столбцами и n строками. В приведенном ниже примере это выглядит как df :

'data.frame':   3 obs. of  2 variables:
 $ vector:List of 3
  ..$ : chr "p1"
  ..$ : chr "p2"
  ..$ : chr "p3"
 $ lists :List of 3
  ..$ :'data.frame':    2 obs. of  2 variables:
  .. ..$ n1: Factor w/ 2 levels "a","b": 1 2
  .. ..$ n2: Factor w/ 2 levels "1","2": 1 2
  ..$ :'data.frame':    1 obs. of  1 variable:
  .. ..$ n1: Factor w/ 1 level "d": 1
  ..$ :'data.frame':    1 obs. of  2 variables:
  .. ..$ n1: Factor w/ 1 level "e": 1
  .. ..$ n2: Factor w/ 1 level "3": 1

df можно воссоздать следующим образом:

v <- c("p1", "p2", "p3")
l <- list(data.frame(n1 = c("a", "b"), n2 = c("1", "2")), data.frame(n1 = "d"), data.frame(n1 = "e", n2 = "3"))
df <- as.data.frame(cbind(v, l))

Я хотел бы преобразовать его во фрейм данных, который выглядит следующим образом:

[v] [n1] [n2]p1  a  1p1  b  2p2  d  NAp3  e  3

  • n1 и n2 в отдельных столбцах
  • если кадр данных в строке i имеет n строк, векторный элемент строки i должен повторяться n раз
  • если в n1 или n2 нет содержимого, то должен быть NA

Я пытался использовать tidyr :: unnest, но получил следующую ошибку

 unnest(df)
Error: All nested columns must have the same number of elements.

У кого-нибудь есть идея, как преобразовать фрейм данных в желаемый формат?


0 ответов