我在R中有一个由6列组成的数据框。其中两个是JSON。我只需要一小部分JSON字符串即可显示在最终数据框中。
其中JSON列之一称为“问题”,其中包含询问用户的问题。另一个JSON列称为“ answer_options”,其中包含您猜出来的answer选项。但是,在此特定子集中,始终只有一个答案选项。这是数据框的前两列:
item_number question answer_options correct_answer
1 {"jsonTypeDefinition":"gameSelector","type":"OpenAnswer","question":{"mediaType":"text","content":"0 x 1"}} {"layout":"Numpad","mediaType":"textAnswerOptions","answerOptions":["0"]} 0
2 {"jsonTypeDefinition":"gameSelector","type":"OpenAnswer","question":{"mediaType":"text","content":"1 x 1"}} {"layout":"Numpad","mediaType":"textAnswerOptions","answerOptions":["1"]} 0
(很抱歉,此处的列名格式错误,我做了很多尝试,但无法使其更简洁。您可以在下表中看到我尝试制作的内容)
这就是我想要的样子:
item_number question answer_options correct_answer
1 "0 x 1" "0" 0
2 "1 x 1" "1" 0
答案 0 :(得分:1)
假设
question = '{"jsonTypeDefinition":"gameSelector","type":"OpenAnswer","question":{"mediaType":"text","content":"0 x 1"}}'
我们可以使用软件包jsonlite
来完成
jsonlite::fromJSON(question)$question$content
# returns
# [1] "0 x 1"
然后,您可以将其复制到数据框的整个列question
,例如
# dt denotes the data frame
vapply(1:nrow(dt),
function (k) jsonlite::fromJSON(dt$question[k])$question$content,
character(1))
然后类似地输入列answer_options
。