以下是您提供的R语言文本的繁體中文翻譯:
# R - 數據重整:初學者指南
你好,未來的R語言編程師們!今天,我們將踏上一段令人興奮的旅程,進入R語言中的數據重整世界。別擔心如果你從未編過程序——我將成為你友善的嚮導,我們會一步一步地進行。在本教程結束時,你將能像專業人士一樣重整數據!
## 什麼是數據重整?
在我們深入之前,讓我們先討論一下數據重整到底是什麼。想像你有一堆樂高積木。數據重整就像重新排列那些積木來建造不同的結構。在R語言中,我們對數據做同樣的事情——重新組織它,使其對分析更有用。
現在,讓我們通過一些實際例子來開始吧!
## 在數據框中合並列和行
### 添加列
我們從一些簡單的事情開始。想像你有一個包含水果信息的數據框:
```R
fruits <- data.frame(
name = c("蘋果", "香蕉", "櫻桃"),
color = c("紅色", "黃色", "紅色")
)
print(fruits)
這將輸出:
name color
1 蘋果 紅色
2 香蕉 黃色
3 櫻桃 紅色
現在,讓我們說我們想為每種水果添加一個新的價格列:
fruits$price <- c(0.5, 0.3, 0.7)
print(fruits)
瞧!我們已經添加了一個新列:
name color price
1 蘋果 紅色 0.5
2 香蕉 黃色 0.3
3 櫻桃 紅色 0.7
添加行
如果我們想在我們的列表中添加一種新水果怎麼辦?我們也可以做到!
new_fruit <- data.frame(name = "棗", color = "棕色", price = 0.6)
fruits <- rbind(fruits, new_fruit)
print(fruits)
這給我們:
name color price
1 蘋果 紅色 0.5
2 香蕉 黃色 0.3
3 櫻桃 紅色 0.7
4 樹 棕色 0.6
合並數據框
現在,讓我們說我們有另一個包含營養信息的數據框:
nutrition <- data.frame(
name = c("蘋果", "香蕉", "櫻桃", "棗"),
calories = c(52, 89, 50, 282)
)
# 合並兩個數據框
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)
這將給我們:
name color price calories
1 蘋果 紅色 0.5 52
2 香蕉 黃色 0.3 89
3 櫻桃 紅色 0.7 50
4 樹 棕色 0.6 282
這不簡單吧?我們已經將來自兩個不同來源的信息結合到了一個綜合性的數據框中!
熔化和铸造
現在,讓我們進行一些更先進的重整技巧。我們將使用reshape2
包,所以請確保安裝並加載它:
install.packages("reshape2")
library(reshape2)
熔化數據
熔化數據就像熔化一塊冰——一切都變得流動,可以重新塑造。讓我們熔化我們的fruit_info
數據:
melted_fruits <- melt(fruit_info, id.vars = "name")
print(melted_fruits)
這給我們:
name variable value
1 蘋果 color 紅色
2 香蕉 color 黃色
3 櫻桃 color 紅色
4 樹 color 棕色
5 蘋果 price 0.50
6 香蕉 price 0.30
7 櫻桃 price 0.70
8 樹 price 0.60
9 蘋果 calories 52.00
10 香蕉 calories 89.00
11 櫻桃 calories 50.00
12 樹 calories 282.00
看見每個屬性(顏色、價格、熱量)都變成了獨立的行嗎?這對某些類型的分析和可視化非常有用。
铸造熔化的數據
現在,我們已經熔化了數據,我們可以將其重塑成新形狀。讓我們說我們想要將水果作為列,屬性作為行:
casted_fruits <- dcast(melted_fruits, variable ~ name)
print(casted_fruits)
這給我們:
variable 蘋果 香蕉 櫻桃 樹
1 color 紅色 黃色 紅色 棕色
2 price 0.50 0.30 0.70 0.60
3 calories 52.00 89.00 50.00 282.00
令人印象深刻,對吧?我們已經徹底改變了我們的數據結構!
結論
恭喜你!你剛剛踏入了R語言中數據重整的世界。記住,就像用樂高積木建造一樣,關鍵是嘗試並找到適合你需求的結構。不要害怕這些函數——這樣你才能真正學會!
這裡是我們所涵蓋方法的快速參考表:
方法 | 函數 | 目的 |
---|---|---|
添加列 |
$ 或 cbind()
|
向數據框添加新變量 |
添加行 | rbind() |
向數據框添加新觀察值 |
合並 | merge() |
結合來自不同數據框的數據 |
熔化 | melt() |
將寬數據重整為長格式 |
铸造 | dcast() |
將長數據重整為寬格式 |
繼續練習,不久你將會像雕塑大師一樣重整數據!快樂編程!
Credits: Image by storyset