在 R 中建立大型資料框

Jinku Hu 2023年1月30日 2021年7月14日
  1. 在 R 中使用向量和因子建立資料框
  2. 在 R 中使用 List 建立資料框
  3. 在 R 中使用矩陣建立資料框
在 R 中建立大型資料框

本文將解釋在 R 中建立大型資料框的幾種方法。

在 R 中使用向量和因子建立資料框

資料框是 R 語言最強大的內建資料結構,它類似於表格矩陣,其中每一列的長度相同,並且它們必須有名稱。但是,在下面,它具有更多類似列表的功能,因為資料框的每一列都被視為列表資料結構的一個元素。從好的方面來說,我們可以使用向量和因子的混合構造一個資料框,如下面的程式碼片段所示。我們使用 data.frame 函式從向量和因子構建一個資料框物件。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df2 <- data.frame(v1, v2, v3, wday)

輸出:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

在 R 中使用 List 建立資料框

或者,可以使用列表物件建立資料框物件。雖然,此方法需要一個名為 as.data.frame 的不同函式,它將單個列表物件轉換為資料框。請注意,我們在下面的示例中使用 list 函式構造列表物件,並將呼叫作為 as.data.frame 的引數連結。由於資料框必須具有列標籤,因此如果使用者未指定它們,通常會自動選擇它們。如果在轉換過程中選擇了不需要的名稱,則始終可以呼叫 colnames 函式併為其分配一個列名稱向量。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df1 <- as.data.frame(list(v1, v2, v3, wday))
colnames(df1) <- c("v1", "v2", "v3", "wday")
df1

輸出:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

在 R 中使用矩陣建立資料框

有時,需要大量的資料幀分配,用向量或列表進行初始化是不切實際的。幸運的是,matrix 函式提供了一種通過指定行/列號來構建大型資料框的簡單快捷的方法。或者,可以使用作為第一個引數傳遞的向量來初始化資料幀中的值。否則,元素將具有 NA 值。

m1 <- matrix(1:1000, ncol = 10, nrow = 100)
df1 <- as.data.frame(m1)
df1

輸出:

V1  V2  V3  V4  V5  V6  V7  V8  V9  V10
1     1 101 201 301 401 501 601 701 801  901
2     2 102 202 302 402 502 602 702 802  902
....
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - R Data Frame