使用 data.table 在 R 中進行資料操作


資料操作是資料分析過程中的一個關鍵步驟,因為它允許我們以適合特定分析或視覺化的方式準備和組織資料。根據資料的型別和結構以及操作的具體目標,存在許多不同的資料操作工具和技術。

data.table 包是R的一個包,它提供了Rdata.frame類的增強版本。它的語法和功能使操作和處理大型資料集更容易、更快。

data.table 是開發人員下載最多的包之一,也是資料科學家的理想選擇。

安裝 data.table 包

安裝 data.table 包與安裝其他包一樣簡單。您可以使用以下命令在CRAN的命令列工具中安裝此包:

使用 CRAN 安裝 'data.table' 包

install.packages('data.table')

從 Gitlab 安裝開發版本

install.packages("data.table",
repos="https://Rdatatable.gitlab.io/data.table")

匯入資料集

在 R 程式語言中,我們有大量的內建資料集,可以用作演示資料來演示 R 函式的工作方式。

一個這樣的流行內建資料集是“Iris”資料集。此資料集提供了 50 朵花(三個不同物種)的四個不同屬性的測量值。

我們在data.table中處理資料集的方式與在data.frame中處理資料集的方式大相徑庭。讓我們深入探討這一點並獲得一些見解。

data.table 提供了 fread() 函式(快速讀取),它基本上是 data.table 的 read.csv() 函式版本。與 read.csv() 函式類似,它可以讀取本地儲存的檔案,也可以讀取網站上託管的檔案。

示例

考慮以下程式,該程式匯入作為 CSV 檔案儲存在網際網路上的 iris 資料:

# Importing library library(data.table) # Creating a dataset myDataset <- fread("https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv") # print the iris dataset print(myDataset)

輸出

[1] "data.table" "data.frame"

從上面的輸出中可以看到,匯入的資料直接儲存為 data.table。

data.table 通常繼承自 data.frame 類,因此它本身就是一個 data.frame。因此,那些接受 data.frame 的函式也可以用於 data.table。

顯示 IRIS 資料集

示例

# Importing library library(data.table) # Creating a dataset myDataset <- fread( "https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.cs v") # print the iris dataset print(myDataset)

輸出

   Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
  1:        5.1         3.5          1.4         0.2    setosa
  2:        4.9         3.0          1.4         0.2    setosa
  3:        4.7         3.2          1.3         0.2    setosa
  4:        4.6         3.1          1.5         0.2    setosa
  5:        5.0         3.6          1.4         0.2    setosa
 ---                                                            
146:        6.7         3.0          5.2         2.3 virginica
147:        6.3         2.5          5.0         1.9 virginica
148:        6.5         3.0          5.2         2.0 virginica
149:        6.2         3.4          5.4         2.3 virginica
150:        5.9         3.0          5.1         1.8 virginica

Iris 資料集包含 150 行和 5 列。

讓我們列印 iris 資料集的前六行

head(myDataset)

輸出

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1:          5.1         3.5          1.4         0.2  setosa
2:          4.9         3.0          1.4         0.2  setosa
3:          4.7         3.2          1.3         0.2  setosa
4:          4.6         3.1          1.5         0.2  setosa
5:          5.0         3.6          1.4         0.2  setosa
6:          5.4         3.9          1.7         0.4  setosa

基於條件過濾行

data.frame 包的主要問題是該包不瞭解其列名。因此,當我們需要根據列條件選擇或過濾某些行時,有時會變得困難。

data.table 包具有高階功能,使其能夠了解其列名。使用 data.table 包,我們可以透過在方括號內傳遞列條件輕鬆過濾行。

myDataset[column_condition]

這裡column_condition 指定了基於其選擇某些行的列條件。

讓我們考慮一個示例,使用條件 "Sepal.Length==5.1 & Petal.Length==1.4" 來過濾資料集。

示例

# Importing library library(data.table) # Creating a dataset myDataset <- fread( "https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv") # datatable syntax to filter rows # based on column condition myDataset[Sepal.Length==5.1 & Petal.Length==1.4,]

輸出

	    Sepal.Width Petal.Length Petal.Width Species
1:          5.1         3.5          1.4         0.2  setosa
2:          5.1         3.5          1.4         0.3  setosa

如您在上面的輸出中看到的,已過濾出兩行與方括號內提供的列條件匹配的行。

選擇列

我們現在將瞭解如何使用 data.table 包選擇資料集的列。選擇列的基本語法如下所示:

myDataset[, column_number, with = F]

這裡column_number必須等於您要子集的列(列為 1 基)

示例

讓我們考慮一個示例,在這個示例中,我們想要選擇 iris 資料集的第二列:

library(data.table) # Creating a dataset myDataset <- fread( "https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv") # data.table syntax to subset second column myDataset[, 2, with = F]

輸出

     Sepal.Width
  1:         3.5
  2:         3.0
  3:         3.2
  4:         3.1
  5:         3.6
 ---            
146:         3.0
147:         2.5
148:         3.0
149:         3.4
150:         3.0

如您在上面的輸出中看到的,已選擇了 iris 資料集的第二列。

示例

現在讓我們選擇多列。在下面的示例中,我們選擇兩列,即 'Petal.Length' 和 'Species'。

# Importing library library(data.table) # Creating a dataset myDataset <- fread( "https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv") columns <- c('Petal.Length', 'Species') # selecting two columns- 'Petal.Length' and 'Species' myDataset[, columns, with = F]

輸出

     Petal.Length   Species
  1:          1.4    setosa
  2:          1.4    setosa
  3:          1.3    setosa
  4:          1.5    setosa
  5:          1.4    setosa
 ---                       
146:          5.2 virginica
147:          5.0 virginica
148:          5.2 virginica
149:          5.4 virginica
150:          5.1 virginica

在這裡,我們選擇了'Petal.Length' 和 'Species' 兩列。

結論

在本教程中,我們介紹了不同的資料操作技術,例如匯入資料集、根據列條件過濾行等。我希望本教程將幫助您加強在資料科學領域中的知識。

更新於:2023年1月17日

2K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始
廣告