R语言 使用JSON文件
JSON 是 JavaScript Object Notation 的缩写 , 这些文件包含人类可读格式的数据,即文本。像任何其他文件一样,人们可以读取和写入JSON文件。为了在R中处理JSON文件,人们需要安装 “rjson “包。在rjson包下使用JSON文件最常见的任务如下。
- 在R控制台安装并加载rjson包
- 创建一个JSON文件
- 从JSON文件中读取数据
- 写入JSON文件
- 将JSON数据转换为数据帧
- 使用URL工作
安装和加载rjson包
人们可以从R控制台使用 install.packages() 命令以如下方式安装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对象。使用 write() 函数来写入JSON文件。
例子:
# 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数据转换为数据框架
在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工作
人们可以从任何网站获取数据集,提取数据并使用它们。这可以在两个包中的任何一个完成,即 RJSONIO 和 jsonlite。
例子
# 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 "