[英]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_data
为df_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.