R - JSON 檔案:初學者指南
你好啊,未來的 R 巫師!今天,我們將踏上一段令人興奮的旅程,進入 JSON 檔案的世界,以及如何在 R 中處理它們。別擔心如果你從未編程過——我將成為你這次冒險中的友好導遊,就像我這些年來為無數學生所做的一樣。那麼,讓我們潛入水中吧!
什麼是 JSON?
在我們開始之前,讓我們快速了解一下 JSON 是什麼。JSON 的全稱是 JavaScript Object Notation。它是一種輕量級數據格式,對人類來說易於閱讀和編寫,對機器來說則易於解析和生成。把它看作是一種以結構化和有組織的方式存儲信息的方法——就像一个非常整潔的數字文件櫃!
安裝 rjson 套件
要在 R 中處理 JSON 檔案,我們需要一個特殊工具。在 R 的世界中,我們稱這些工具為“套件”。我們將要使用的套件叫做 "rjson"。讓我們來安裝它!
install.packages("rjson")
library(rjson)
當你運行這些行時,R 會連接到互聯網,下載 rjson 套件,並為我們準備使用。這就像去數字工具箱並選擇我們工作的完美工具一樣!
輸入數據
現在,我們有了工具,讓我們來看看一些數據。假設我們有一個叫做 "students.json" 的 JSON 檔案,裡面有關於一些學生的信息。它可能看起來像這樣:
{
"students": [
{
"name": "Alice",
"age": 20,
"major": "Computer Science"
},
{
"name": "Bob",
"age": 22,
"major": "Mathematics"
},
{
"name": "Charlie",
"age": 21,
"major": "Physics"
}
]
}
這個 JSON 檔案包含了一個學生數組,其中每個學生都有名字、年齡和專業。這就像是我們課程的一個迷你數據庫!
讀取 JSON 檔案
現在,讓我們將這個 JSON 檔案讀入 R。我們將使用 rjson 套件中的 fromJSON()
函數:
json_data <- fromJSON(file = "students.json")
這行代碼告訴 R 讀取 "students.json" 檔案並將其內容存儲在名為 json_data
的變量中。這就像我們將 JSON 檔案的内容倒入 R 的容器中。
讓我們看看我們得到了什麼:
print(json_data)
你應該會看到類似這樣的東西:
$students
$students[[1]]
$students[[1]]$name
[1] "Alice"
$students[[1]]$age
[1] 20
$students[[1]]$major
[1] "Computer Science"
$students[[2]]
$students[[2]]$name
[1] "Bob"
$students[[2]]$age
[1] 22
$students[[2]]$major
[1] "Mathematics"
$students[[3]]
$students[[3]]$name
[1] "Charlie"
$students[[3]]$age
[1] 21
$students[[3]]$major
[1] "Physics"
恭喜你!你剛剛讀取了你的第一個 JSON 檔案到 R!
將 JSON 轉換為數據框
雖然 JSON 數據現在已經在 R 中,但它不是最方便的格式用於分析。在 R 中,我們經常喜歡使用一種叫做“數據框”的東西。這就像一個表格或電子表格。讓我們將我們的 JSON 數據轉換為數據框:
students_df <- do.call(rbind, lapply(json_data$students, as.data.frame))
哇!這有點複雜,不是嗎?讓我們分解一下:
-
json_data$students
存取我們 JSON 數據中的 "students" 部分。 -
lapply()
對列表中的每個學生應用as.data.frame()
函數。 -
do.call(rbind, ...)
將所有這些個別的數據框綁定到一個大的數據框中。
現在,讓我們看看我們新的數據框:
print(students_df)
你應該會看到類似這樣的東西:
name age major
1 Alice 20 Computer Science
2 Bob 22 Mathematics
3 Charlie 21 Physics
好多了!現在我們有一個整潔、乾淨的學生數據表。
處理數據框
現在我們將數據存放在數據框中,我們可以輕鬆地在上面進行各種操作。以下是一些例子:
- 計算學生的平均年齡:
mean_age <- mean(students_df$age)
print(paste("學生的平均年齡是:", mean_age))
- 找到所有主修特定科目學生:
cs_students <- students_df[students_df$major == "Computer Science", ]
print("主修計算機科學的學生:")
print(cs_students)
- 添加一個新列:
students_df$graduation_year <- 2023 + (22 - students_df$age)
print(students_df)
結論
就是这样!我們從安裝套件,到讀取 JSON 檔案,再到將其轉換為數據框並進行一些基本操作,一路旅行。你已經邁出了在 R 中數據操作的第一步!
記住,像任何技能一樣,在 R 中處理 JSON 讓人隨著練習而變得容易。不要害怕嘗試和嘗試新事物。誰知道呢?下一個重大的數據發現可能就在你的指尖!
這裡是一個我們使用的主要函數的總結表:
函數 | 套件 | 描述 |
---|---|---|
install.packages() |
base R | 安裝一個套件 |
library() |
base R | 加载一個套件 |
fromJSON() |
rjson | 讀取一個 JSON 檔案 |
do.call() |
base R | 构建并执行一个函数调用 |
rbind() |
base R | 按行组合 R 对象 |
lapply() |
base R | 在列表或向量上应用一个函数 |
as.data.frame() |
base R | 强制转换为数据框 |
mean() |
base R | 计算算术平均值 |
快乐编码,愿你的数据永远整洁!
Credits: Image by storyset