我目前正在开发一个项目,需要使用 R 将嵌套 JSON 结构转换为 DataFrame。我在当前方法中遇到一些问题,如果您能提供有关如何正确处理此问题的帮助或指导,我将不胜感激转换。
Json 文件如下所示:
json_data <- '{
"resourceType": "QuestionnaireResponse",
"id": "example-questionnaireresponse",
"questionnaire": "Questionnaire/example",
"status": "completed",
"subject": {
"reference": "Patient/example"
},
"authored": "2023-12-19T12:00:00Z",
"source": {
"reference": "Patient/example"
},
"item": [
{
"linkId": "page1",
"text": "Page 1",
"item": [
{
"linkId": "1.1",
"text": "Quel est votre nom?",
"answer": [
{
"valueString": "Participant 1"
},
{
"valueString": "Participant 2"
}
]
},
{
"linkId": "1.2",
"text": "Quel est votre âge?",
"answer": [
{
"valueInteger": 30
},
{
"valueInteger": 25
}
]
},
{
"linkId": "1.3",
"text": "Quel est votre lieu de résidence?",
"answer": [
{
"valueString": "Ville A"
},
{
"valueString": "Ville B"
}
]
}
]
},
{
"linkId": "page2",
"text": "Page 2",
"item": [
{
"linkId": "2.2",
"text": "Nombre dannées dexpérience?",
"answer": [
{
"valueInteger": 5
},
{
"valueInteger": 2
}
]
},
{
"linkId": "2.3",
"text": "Êtes-vous heureux?",
"answer": [
{
"valueBoolean": true
},
{
"valueBoolean": false
}
]
}
]
}
]
}'
json文件是两个参与者对问卷的回答!我想要一个数据框,其中每行包含参与者的响应,而一列包含对特定问题的响应。
我的方法:
df <- fromJSON(json_data) %>%
as_tibble() %>%
unnest_wider(item) %>%
unnest_wider(item) %>%
unnest_wider(answer) %>%
select(linkId, text, valueString, valueInteger, valueBoolean)
这显然不起作用..
如何将 FHIR json 文件结构转换为数据帧?一个未嵌套的数据框。
library(tidyverse)
jsonlite::fromJSON(json_data) %>%
pluck("item", "item") %>%
map_dfr(~ .x %>%
mutate(across(answer, ~ map(.x, ~ as.character(pull(.x, 1))))) %>%
unnest_wider(answer, names_sep = "_"))
# A tibble: 5 x 4
linkId text answer_1 answer_2
<chr> <chr> <chr> <chr>
1 1.1 Quel est votre nom? Participant 1 Participant 2
2 1.2 Quel est votre bge? 30 25
3 1.3 Quel est votre lieu de risidence? Ville A Ville B
4 2.2 Nombre dannies dexpirience? 5 2
5 2.3 Jtes-vous heureux? TRUE FALSE