我有一个数据框,其中包含一个字典列表作为字符串。
重复性小的例子:
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的每一行。
由于
答案 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"