将结构化文本文件转换为R中的列CSV

时间:2019-12-18 15:58:40

标签: r dataframe

我正在编写脚本,以将大型文本文件转换为CSV文件。文本文件中的所有数据都按如下所示大块显示。这些块中的每一个都由{}分隔。我正在尝试做的是阅读这些块中的第一个,采用不同的类别,如GlobalId,MetaDataId和其余类别,然后将它们转换为列标题,然后在这些列标题下方对文本文件的其余部分进行排序。

{
    "GlobalId": 4222124650675654,
    "MetaDataId": "0e1a6cbe-fd3d-4782-af6a-fe3ffceb6a0d",
    "vendorId": "",
    "vendorName": "Vendor Test 2",
    "Uid": "vendortest1",
    "statsType": "SUSHI",
    "Url": "http://vendortest1.com/sushi/V5",
    "RunDay": 6,
    "reportName": "JR1, DB1",
    "Release": "R5",
    "supported": true,
    "deleted": false,
    "showIP": false,
    "trickle": 0
},

我尝试了以下操作:converting multiple lines of text into a data frame,但并没有取得太大的成功。

1 个答案:

答案 0 :(得分:0)

这似乎是可以使用jsonlite读取的json

library(jsonlite)
x <- '{
  "GlobalId": 4222124650675654,
  "MetaDataId": "0e1a6cbe-fd3d-4782-af6a-fe3ffceb6a0d",
  "vendorId": "",
  "vendorName": "Vendor Test 2",
  "Uid": "vendortest1",
  "statsType": "SUSHI",
  "Url": "http://vendortest1.com/sushi/V5",
  "RunDay": 6,
  "reportName": "JR1, DB1",
  "Release": "R5",
  "supported": true,
  "deleted": false,
  "showIP": false,
  "trickle": 0
}'

返回字段名称:

names(fromJSON(x))

[1] "GlobalId"   "MetaDataId" "vendorId"   "vendorName" "Uid"        "statsType"  "Url"        "RunDay"     "reportName"
[10] "Release"    "supported"  "deleted"    "showIP"     "trickle"   

尽管如果列名用于构建data.frame,则该库也应该能够为您完成工作:

fromJSON(x)