【问题标题】:r data.frame with json datar data.frame 与 json 数据
【发布时间】:2018-01-21 02:53:08
【问题描述】:

我有一个包含 json 数据的 data.frame:

dat1 = data.frame(id = 001, name = "Mac", score = '{"math":5}', date = '{"date1":"2018-01-19","date2":"2018-01-20"}')
dat2 = data.frame(id = 002, name = "Eric", score = '{"math":7}', date = '{"date1":"2018-01-18","date2":"2018-01-20"}')
dat = rbind(dat1, dat2)

我想得到以下data.frame:

#   id name   score.math     date.date1       date.date2
# 1  1  Mac       5          2018-01-19       2018-01-20
# 2  2 Eric       7          2018-01-18       2018-01-20

我想先使用 jsonlite::fromJSON,然后再使用 rbind 数据。

【问题讨论】:

  • 您可以使用regexecregmatches 将日期和分数字段转换为所需的对象类型。首先使用data.table::rbindlist(list(dat1, dat2), use.names = T, fill = T)得到一个合并的data.table,然后在两列上调用函数。

标签: json r


【解决方案1】:

这是jsonlite的一个选项

library(jsonlite)
data.frame(c(dat[1:2], unlist(lapply(dat[3:4], function(x) 
    fromJSON(paste0("[", paste(x,  collapse=",\n"), "]"))),
            recursive = FALSE)), stringsAsFactors = FALSE)
#  id name score.math date.date1 date.date2
#1  1  Mac          5 2018-01-19 2018-01-20
#2  2 Eric          7 2018-01-18 2018-01-20

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多