Я думаю, вам нужно опубликовать больше ваших данных, но:
data_toy.json = '{"department": {"BME": [{"course_name": "BMD_ENG_250-0_20 Thermodynamics","instructor": "Neha Kamat","instructor_gender": "F"}]}}'
dat <- jsonlite::fromJSON(data_toy.json, simplifyVector = FALSE, simplifyDataFrame = FALSE, flatten=FALSE)
str(dat)
## List of 1
## $ department:List of 1
## ..$ BME:List of 1
## .. ..$ :List of 3
## .. .. ..$ course_name : chr "BMD_ENG_250-0_20 Thermodynamics"
## .. .. ..$ instructor : chr "Neha Kamat"
## .. .. ..$ instructor_gender: chr "F"
База R:
do.call(
rbind.data.frame,
unname(lapply(dat, function(x) {
tdf <- as.data.frame(x[[1]], stringsAsFactors=FALSE)
tdf$department <- names(x)[1]
tdf
}))
)
## course_name instructor instructor_gender department
## 1 BMD_ENG_250-0_20 Thermodynamics Neha Kamat F BME
Если вы застряли в тидиверсе:
library(purrr)
map_df(dat, ~{
flatten_df(.x[[1]]) %>%
dplyr::mutate(department = names(.x)[1])
})
## # A tibble: 1 x 4
## course_name instructor instructor_gender department
## <chr> <chr> <chr> <chr>
## 1 BMD_ENG_250-0_20 Thermodynamics Neha Kamat F BME