当前位置: 首页 > 知识库问答 >
问题:

如何在R中将嵌套的txt/json转换成“合适的”数据帧

程墨竹
2023-03-14

我下载了一个超过200万行的数据集,如下所示(我有10列/变量,从“messageid”开始。我不知道“id”列或变量是什么??应该是,但我不需要这些来进行分析):

{
    "_id": {
        "$id": "fh37fc3huc3"
    },
    "messageid": "4757724838492485088139042828",
    "attachments": [],
    "usernameid": "47284592942",
    "username": "Alex",
    "server": "475774810304151552",
    "text": "Must watch",
    "type": "462050823720009729",
    "datetime": "2018-08-05T21:20:20.486000+00:00",
    "type": {
        "$numberLong": "0"
    }
}

{
    "_id": {
        "$id": "23453532dwq"
    },
    "messageid": "232534",
    "attachments": [],
    "usernameid": "273342",
    "usernameid": "Alice",
    "server": "475774810304151552",
    "text": "https://www.youtube.com/",
    "type": "4620508237200097wd29",
    "datetime": "2018-08-05T21:20:11.803000+00:00",
    "type": {
        "$numberLong": "0"
    }

在我意识到这是一个“嵌套数据集”之前,我尝试了显而易见的方法:

test <- read.csv(test.csv, row.names=NULL)

这是错误消息:

read.table(文件 = 文件,头 = 头,sep = sep,引号 = 引号,:列数多于列名

如果我不使用“row.names=NULL”

test <- read.csv(test.csv)

这是错误消息:

读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names”

有人知道如何将这个嵌套的数据集读入R中,其中每个变量都是一列,每个观察值都是一行吗?

共有1个答案

武琛
2023-03-14

此文件是json类型而不是csv类型。您需要添加[]以指示它是一个json列表。然后您可以将树装入表中:

文件数据的内容

[{
  "_id": {
    "$id": "fh37fc3huc3"
  },
  "messageid": "4757724838492485088139042828",
  "attachments": [],
  "usernameid": "47284592942",
  "username": "Alex",
  "server": "475774810304151552",
  "text": "Must watch",
  "type": "462050823720009729",
  "datetime": "2018-08-05T21:20:20.486000+00:00",
  "type": {
    "$numberLong": "0"
  }
},

{
  "_id": {
    "$id": "23453532dwq"
  },
  "messageid": "232534",
  "attachments": [],
  "usernameid": "273342",
  "usernameid": "Alice",
  "server": "475774810304151552",
  "text": "https://www.youtube.com/",
  "type": "4620508237200097wd29",
  "datetime": "2018-08-05T21:20:11.803000+00:00",
  "type": {
    "$numberLong": "0"
  }
}
]

代码:

library(jsonlite)
library(tidyverse)

fromJSON("data.json") %>% as_tibble()
#> # A tibble: 2 x 9
#>   `_id`$`$id` messageid   attachments usernameid  username server  text   type  
#>   <chr>       <chr>       <list>      <chr>       <chr>    <chr>   <chr>  <chr> 
#> 1 fh37fc3huc3 4757724838… <list [0]>  47284592942 Alex     475774… Must … 46205…
#> 2 23453532dwq 232534      <list [0]>  273342      <NA>     475774… https… 46205…
#> # … with 1 more variable: datetime <chr>

< sup >由reprex软件包(2.0.1版)于2021-11-09创建

 类似资料:
  • 问题内容: 我在Scala和Java之间遇到编译问题。 我的Java代码需要一个 我的scala代码有一个 我收到编译错误: 似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以隐式转换为Iterable。除了遍历scala集合并手动进行转换之外,我还能做些什么使这些类型起作用? 问题答案: 应该弃用恕我直言。您最好使用来明确说明转换的时间和地

  • 问题内容: 我有一个要转换为json格式的数据框: 我的数据帧称为res1: 当我做: 我得到这个: 我需要这个json输出像这样,有什么想法吗? 问题答案: 怎么样 通过使用,我们实际上将大的data.frame分解为每一行的单独的data.frame。通过从结果列表中删除名称,该函数将结果包装在数组中,而不是命名对象中。

  • 本文向大家介绍如何在R中将数据帧转换为data.table?,包括了如何在R中将数据帧转换为data.table?的使用技巧和注意事项,需要的朋友参考一下 由于对data.table的操作有时比数据帧快,因此我们可能希望将数据帧转换为data.table对象。数据框和data.table之间的主要区别在于,数据框可在基础R中使用,但是要使用data.table,我们必须安装软件包data.tabl

  • 我有一个JSON如下所示: 为什么在输出中看不到Level1、Level2?请有人帮忙,我想看看在输出和输入太相似了。

  • 如何使用jolt转换将平面JSON转换为嵌套JSON?我对JSON和jolt是新手。 输入: 预期输出: 编辑:我想在< code>SubFunds中添加一个新字段,但是新字段不在JSON文件中,它是计算字段,我可以按原样添加示例吗 并重命名字段:

  • 我正在尝试从位于的文件导入数据https://drive.google.com/file/d/1leOUk4Z5xp9tTiFLpxgk_7KBv3xwn5eW/view进入数据帧。我试过使用 但是我得到一个错误说"ParserError:错误标记化数据。C错误:期望在行231中有9个字段,看到10"我不想使用'error_bad_lines=False'并跳过数据行。 请帮忙。