我有一个包含JSON数据的列,如下例所示,
library(data.table)
test <- data.table(a = list(1,2,3),
info = list("{'duration': '10', 'country': 'US'}",
"{'duration': '20', 'country': 'US'}",
"{'duration': '30', 'country': 'GB', 'width': '20'}"))
Run Code Online (Sandbox Code Playgroud)
我想将最后一列转换为等效的R存储,看起来类似于
res <- data.table(a = list(1, 2, 3),
duration = list(10, 20, 30),
country = list('US', 'US', 'GB'),
width = list(NA, NA, 20))
Run Code Online (Sandbox Code Playgroud)
由于我有500K行具有不同的内容,我会寻找一个快速的方法来做到这一点.
无需分离JSON字符串的变体
library(data.table)
library(jsonlite)
test[, info := gsub("'", "\"", info)]
test[, rbindlist(lapply(info, fromJSON), use.names = TRUE, fill = TRUE)]
# duration country width
# 1: 10 US NA
# 2: 20 US NA
# 3: 30 GB 20
Run Code Online (Sandbox Code Playgroud)