【发布时间】:2015-08-21 07:59:08
【问题描述】:
我有一个数据框,其中 Parameters 列的值是 Json 数据:
# Parameters
#1 {"a":0,"b":[10.2,11.5,22.1]}
#2 {"a":3,"b":[4.0,6.2,-3.3]}
...
我想提取每一行的参数并将它们作为列 A、B1、B2 和 附加到数据框中>B3.
我该怎么做?
如果可能且高效,我宁愿使用 dplyr。
【问题讨论】:
-
@akrun 是的,但我不知道如何将 fromJSON 应用到每一行并将数据附加到数据框中
-
如果要提取数字部分,
library(stringr);do.call(rbind,lapply(str_extract_all(df1$Parameters, '[0-9.]+'), as.numeric))并将列命名为A, B1:B4 -
库(rjson); v = c('{"a":0,"b":[10.2,11.5,22.1]}','{"a":3,"b":[4.0,6.2,-3.3]}'); lapply(v,fromJSON)
-
@akrun 不可以用fromJSON吗?也可以提取字符串变量。
-
@Medicalphysicist 库(rjson); v = c('{"a":0,"b":[10.2,11.5,22.1]}','{"a":3,"b":[4.0,6.2,-3.3]}'); v1 = lapply(v,fromJSON); data.frame(t(sapply(v1,function(y) lapply(y,function(x) paste(x,collapse=','))))))