Med*_*ist 4 json r sapply dplyr
我有一个数据框,其中列参数的值是 Json 数据:
# Parameters
#1 {"a":0,"b":[10.2,11.5,22.1]}
#2 {"a":3,"b":[4.0,6.2,-3.3]}
...
Run Code Online (Sandbox Code Playgroud)
我想提取每行的参数并将它们作为A、B1、B2和B3列附加到数据框中。
我该怎么做?
如果可能且高效的话,我宁愿使用dplyr 。
在您的示例数据中,每行都包含一个 json 对象。这种格式称为jsonlines又名ndjson,并且 jsonlite 包有一个特殊的函数stream_in可以将此类数据解析为数据框:
# Example data
mydata <- data.frame(parameters = c(
'{"a":0,"b":[10.2,11.5,22.1]}',
'{"a":3,"b":[4.0,6.2,-3.3]}'
), stringsAsFactors = FALSE)
# Parse json lines
res <- jsonlite::stream_in(textConnection(mydata$parameters))
# Extract columns
a <- res$a
b1 <- sapply(res$b, "[", 1)
b2 <- sapply(res$b, "[", 2)
b3 <- sapply(res$b, "[", 3)
Run Code Online (Sandbox Code Playgroud)
在您的示例中,json 结构相当简单,因此其他建议也有效,但此解决方案将推广到更复杂的 json 结构。
| 归档时间: |
|
| 查看次数: |
4987 次 |
| 最近记录: |