Строка связывает вложенный фрейм данных в списке - PullRequest
1 голос
/ 04 мая 2020

Я надеялся, что кто-нибудь может помочь мне с моей проблемой. У меня есть json ответ в формате списка.

Структура представляет собой список. Внутри каждого списка есть колонка игроков. Он вложен в каждый список следующим образом:

df[[1]]$body$wildcards$players

Столбец players является вложенным df в каждом списке. Как бы я связал столбец игроков, вложенный df для полного списка?

Изображение скриншота ниже.

sample <- list(
  list(
    body = list(
      wildcards = list(
        players = data.frame(
          firstname = c("Fernando", "Jon"),
          throws = c("L", "R")
        )
      ),
      statusMessage = "OK",
      statusCode = 200
    )
  ),
  list(
    body = list(
      wildcards = list(
        players = data.frame(
          firstname = c("Eduardo", "James"),
          throws = c("L", "R")
        )
      ),
      statusMessage = "OK",
      statusCode = 200
    )
  )
)

Вот скриншот структуры: JSON

Вывод df

tibble::tribble(
  ~firstname, ~throws,
  "Fernando",     "L",
       "Jon",     "R",
   "Eduardo",     "L",
     "James",     "R"
  )

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Мы можем использовать pluck с map

library(purrr)
map_dfr(sample, ~ pluck(.x, 'body', 'wildcards','players'))
#  firstname throws
#1  Fernando      L
#2       Jon      R
#3   Eduardo      L
#4     James      R
1 голос
/ 04 мая 2020

Если у вас одинаковые имена столбцов в каждом фрейме данных:

library(data.table)
new_df <- rbindlist(lapply(df,function(x)x$body$wildcards$players),use.names=T,fill=T)

Обратите внимание, что у вас не одинаковое количество столбцов в каждом df, поэтому с аргументом fill=T у вас будет NA s в вашем фрейме данных.

Решает ли это вашу проблему?

...