从R中的词典列表中提取数据

时间:2017-07-20 11:46:30

标签: json r parsing dictionary

我有一个数据框,其中包含一个字典列表作为字符串。

重复性小的例子:

ids <- c('[{"type":"A","value":"666"},{"type":"M","value":"029"},{"type":"A","value":"ABC"},{"type":"E","value":"5"},{"type":"E34","value":"456"}]',
         '[{"type":"G","value":"334"},{"type":"A","value":"ZG5"},{"type":"E","value":"098"}]')

dt <- as.data.frame(ids)
dt

我想要做的是在dt中创建一个名为dt$A的新列,其中包含每个对应行的"type":"A"的第一个值。

每行至少有一个"type":"A"

在上面的例子中,我想得到:

> dt$A
[1] "666" "ZG5"

到目前为止,我已尝试使用rjson库,但我无法提取我想要的值,而且我还没弄明白如何将其应用到dt的每一行。

由于

1 个答案:

答案 0 :(得分:2)

以下是regex的选项。使用gsub删除双引号,然后使用A,value:

提取str_extract之后的单词
library(stringr)
dt$A <- str_extract(gsub('"', "", dt$ids), "(?<=A,value:)\\w+")
dt$A
#[1] "666" "ZG5"