繁体   English   中英

jsonlite正在使用类data.frame的列创建一个data.frame

[英]jsonlite is creating a data.frame with a column of class data.frame

json_lite :: read_json()将我的json文件作为列表读入R。

要重现我的问题,请从任何文本编辑器将以下代码另存为.json文件,然后可以将该文件读入R。

{
"data": [
{
"type": "invite",
"send_date": "2018-05-01"
},
{
"type": "reminder",
"send_date": "2018-05-03",
"tokens": {
"email_subject": "REMINDER: Franchise Exit Survey"
}
},
{
"type": "reminder",
"send_date": "2018-05-07",
"tokens": {
"email_subject": "REMINDER: Franchise Exit Survey"
}
}
],
"relationships": {
"invitee": {
"data": {
"id": "b292aa38"
}
}
}
}

您可以将json文件读入R

library(jsonlite)
library(dplyr)
library(readr)

file_json <- "json_saved_from_text_editor.json"

l_json <- read_json(file_json, simplifyVector = TRUE) 

# to view the data.frame portion of l_json whose third column is itself a data.frame:
l_json[[1]]

此列表的第一个元素是class data.frame,其第三列也是class data.frame。 我曾在小标题中处理过列表列,但从未遇到过data.frame和类data.frame的列。 重要的是,data.frame类的这一列与我遇到的任何其他列类的行为都有很大不同。 它不能是非嵌套的,其值对整个data.frame的尺寸敏感。

有没有一种方法可以操纵,创建或避免使用列的data.frame类?

我的最终目标是能够从数据框中重新创建这个小的json文件。 但是我不知道如何操作或创建这些data.frame列。

您需要处理嵌套在json中的几个斑点。 为了方便df_data ,我将df$data的实际数据df_datadf_data ,它具有一个列tokens ,该tokens本身就是一列的数据帧email_subject 如果运行df_data %>% pull(tokens) %>% pull(email_subject) ,您将获得电子邮件主题行的向量,可以将其放入新的数据框中。

df_data <- df$data

df_fix <- bind_cols(
    df_data %>% select(type, send_date),
    email_subject = df_data %>% pull(tokens) %>% pull(email_subject)
)

输出如下所示:

      type  send_date                   email_subject
  invite   2018-05-01                            <NA>
  reminder 2018-05-03 REMINDER: Franchise Exit Survey
  reminder 2018-05-07 REMINDER: Franchise Exit Survey

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM