📜  在 R 编程中使用 JSON 文件

📅  最后修改于: 2022-05-13 01:55:25.557000             🧑  作者: Mango

在 R 编程中使用 JSON 文件

JSON代表JavaScript 对象表示法。这些文件包含人类可读格式的数据,即文本。与任何其他文件一样,您可以读取和写入 JSON 文件。为了在 R 中使用 JSON 文件,需要安装“rjson”包。使用 rjson 包下的 JSON 文件完成的最常见任务如下:

  • 在 R 控制台中安装和加载 rjson 包
  • 创建 JSON 文件
  • 从 JSON 文件中读取数据
  • 写入 JSON 文件
  • 将 JSON 数据转换为 Dataframe
  • 使用 URL

安装并加载 rjson 包

可以通过以下方式使用install.packages()命令从 R 控制台安装 rjson:

install.packages("rjson")

安装 rjson 包后,必须使用library()函数加载包,如下所示:

library("rjson")

创建 JSON 文件

要创建 JSON 文件,可以执行以下步骤:

  • 将下面给出的数据复制到记事本文件或任何文本编辑器文件中。也可以根据给定的格式创建自己的数据。
    { 
       "ID":["1","2","3","4","5"],
       "Name":["Mithuna","Tanushree","Parnasha","Arjun","Pankaj"],
       "Salary":["722.5","815.2","1611","2829","843.25"],
       "StartDate":["6/17/2014","1/1/2012","11/15/2014","9/23/2013","5/21/2013"],
       "Dept":["IT","IT","HR","Operations","Finance"]
    }
  • 选择“所有类型”作为文件类型,并以.json扩展名保存文件。(示例:example.json)
  • 必须确保信息或数据包含在一对或花括号 {} 中。

读取 JSON 文件

在 R 中,读取 JSON 文件是一项非常简单的任务。使用fromJSON()函数可以非常高效地提取和读取 JSON 文件的数据。 fromJSON()函数获取 JSON 文件,并默认以列表格式返回从 JSON 文件中提取的数据。

例子:

假设上述数据存储在 E 盘名为example.json的文件中。要读取文件,我们必须编写以下代码。

# Read a JSON file
  
# Load the package required to read JSON files.
library("rjson")
  
# Give the input file name to the function.
result <- fromJSON(file = "E:\\example.json")
  
# Print the result.
print(result)

输出:

$ID
[1] "1" "2" "3" "4" "5"

$Name
[1] "Mithuna"   "Tanushree" "Parnasha"  "Arjun"     "Pankaj"

$Salary
[1] "722.5"  "815.2"  "1611"   "2829"   "843.25"

$StartDate
[1] "6/17/2014"  "1/1/2012"   "11/15/2014" "9/23/2013"  "5/21/2013"

$Dept
[1] "IT"         "IT"         "HR"         "Operations" "Finance"

写入 JSON 文件

在将数据写入 JSON 文件之前,需要使用toJSON()函数创建一个 JSON 对象。要写入 JSON 文件,请使用write()函数。

示例

# Writing into JSON file.
  
# Load the package required to read JSON files.
library("rjson")
  
# creating the list
list1 <- vector(mode="list", length=2)
list1[[1]] <- c("sunflower", "guava", "hibiscus")
list1[[2]] <- c("flower", "fruit", "flower")
  
# creating the data for JSON file
jsonData <- toJSON(list1)
  
# writing into JSON file
write(jsonData, "result.json") 
  
# Give the created file name to the function
result <- fromJSON(file = "result.json")
  
# Print the result
print(result)

输出:

[[1]]
[1] "sunflower" "guava"     "hibiscus"

[[2]]
[1] "flower" "fruit"  "flower"

将 JSON 数据转换为 Dataframe

在 R 中,要将 JSON 文件中提取的数据转换为数据框,可以使用as.data.frame()函数。

例子:

# Convert the file into dataframe
  
# Load the package required to read JSON files.
library("rjson")
  
# Give the input file name to the function.
result <- fromJSON(file = "E://example.json")
  
# Convert JSON file to a data frame.
json_data_frame <- as.data.frame(result)
  
print(json_data_frame)

输出:

ID      Name Salary  StartDate       Dept
1  1   Mithuna  722.5  6/17/2014         IT
2  2 Tanushree  815.2   1/1/2012         IT
3  3  Parnasha   1611 11/15/2014         HR
4  4     Arjun   2829  9/23/2013 Operations
5  5    Pankaj 843.25  5/21/2013    Finance

使用 URL

可以从任何网站获取数据集并提取数据并使用它们。这可以在两个包中的任何一个下完成,即RJSONIOjsonlite

例子:

# working with URLs
  
# import required library
library(RJSONIO)
  
# extracting data from the website
Raw <- fromJSON(
       "https://data.ny.gov/api/views/9a8c-vfzj/rows.json?accessType=DOWNLOAD")
  
# extract the data node
food_market <- Raw[['data']]
  
# assembling the data into data frames
Names <- sapply(food_market, function(x) x[[14]])
head(Names)

输出:

[1] "LUCKY MART             " "CUMBERLAND FARMS 1587  "
[3] "K&M SPORTS             " "MASON&OLD RIDGE FARM   "
[5] "HAMPTON CHUTNEY CO     " "CM - HUTCHINSON        "