R語言用來存儲數據的對象包括: 向量, 因子, 數組, 矩陣, 數據框, 時間序列(ts)以及列表
意義介紹
1. 向量(一維數據): 只能存放同一類型的數據
語法: c(data1, data2, ...),訪問的時候下標從1開始(和Matlab相同);向量里面只能存放相同類型的數據.
1
2
3
4
5
6
|
> x <- c(1,5,8,9,1,2,5) > x [1] 1 5 8 9 1 2 5 > y <- c(1,"zhao") # 這里面有integer和字符串, 整數自動轉化成了字符 > y[1] [1] "1" |
訪問:
1
2
3
4
|
> x[-(1:2)] # 不顯示第1,2個元素 [1] 8 9 1 2 5 > x[2:4] # 訪問第2,3,4個元素 [1] 5 8 9 |
2. 因子(factors): 提供了一個處理分類數據的更簡潔的方式
因子在整個計算過程中不再作為數值, 而是作為一個"符號"而已.
factor(x=character(), levels, labels=levels, exclude=NA, ordered=is.ordered(x), nmax=NA)
x: 一個數據向量, 它將被轉換成為因子;
levels: 用來指定因子可能出現的水平(默認也就是向量x里面互異的值, sort(unique(x)));它是一個字符向量(即每個元素是單個字符, 組成的一個向量), 下面的變量b就是一個字符向量(可以使用as.character()函數來生成).
labels: 用來指定水平的名字;
1
2
3
4
|
> a <- c(6,1,3,0) > b = as.character(a) > b [1] "6" "1" "3" "0" |
exclude: 一個值向量, 表示從向量x里面剔除的水平值.
nmax: 水平數目的上界.
1
2
3
4
5
6
7
8
9
|
> factor(1:3) [1] 1 2 3 Levels: 1 2 3 > factor(1:3, levels=1:6) [1] 1 2 3 Levels: 1 2 3 4 5 6 > factor(1:6, exclude = 2) [1] 1 <NA> 3 4 5 6 Levels: 1 3 4 5 6 |
一般因子(factor) VS 有序因子(ordered factor)
因子用來存放變量或者有序變量, 這類變量不能用來計算, 而只能用來分類或者計數. 一般因子表示分類變量, 有序因子用來表示有序變量.
創建一個因子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
> colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y') > col <- factor(colour) #生成因子 #labels里面的內容代替對應位置處的levels內容 > col1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow')) > levels(col) [1] "G" "R" "Y" > levels(col1) [1] "Green" "Red" "Yellow" > col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3')) > levels(col2) [1] "1" "2" "3" > col_vec <- as.vector(col2) > class(col_vec) [1] "character" > col2 [1] 1 1 2 3 1 3 3 2 3 Levels: 1 2 3 > col_num <- as.numeric(col2) > col_num [1] 1 1 2 3 1 3 3 2 3 > col3 <- factor(colour, levels = c('G', 'R')) #levels里面沒有'B',導致col3里面的'B'變成了<NA> > col3 [1] G G R <NA> G <NA> <NA> R <NA> Levels: G R > colour [1] "G" "G" "R" "Y" "G" "Y" "Y" "R" "Y" |
創建一個有序因子:
1
2
3
4
5
|
> score <- c('A', 'B', 'A', 'C', 'B') > score1 <- ordered(score, levels = c('C', 'B', 'A')); > score1 [1] A B A C B Levels: C < B < A |
3. 矩陣(matrix, 二維數據): 只能存放同一類型
語法: matrix(data, nrow = , ncol = , byrow = F) -- byrow = F表示按列來存放數據(默認), byrow=T表示按行存放數據;
1
2
3
4
5
|
> xx = matrix(1:10, 2, 5) > xx [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 |
4. 數組(大于等于三維的數據): 只能存放同一類型
語法: array(data, dim) -- data: 必須是同一類型的數據; dim: 各維的維度組成的向量;(怎么感覺和matlab里面的reshape函數那么像)
1
2
3
4
5
|
> a = array(1:10,c(2,5)) > a [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 |
5. 數據框(data frame)
數據框是一種矩陣形式排列的數據(類似于excel表格), 但是和矩陣不同的是, 它的每一列可以是不同的數據類型(還是和excel很像).
語法: data.frame(data1, data2,...) -- data1,...為每列的數據.
1
2
3
4
5
6
7
8
9
|
> name <- c("Mr A", "Mr B", "Mr C") > group <- rep(1,3) > scort <- c(58,15,41) > df <- data.frame(name, group, scort) > df name group scort 1 Mr A 1 58 2 Mr B 1 15 3 Mr C 1 41 |
數據訪問:
1
2
3
4
5
6
7
8
|
> df$name [1] Mr A Mr B Mr C Levels: Mr A Mr B Mr C > df[1] name 1 Mr A 2 Mr B 3 Mr C |
6. 列表(list): 可以存放不同類型的數據
語法: list(name1=component1, name2=component2, ...)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
> xx <- rep(1:2, 3:4) > yy <- c('Mr A', 'Mr B', 'Mr C', 'Mr D', 'Mr E', 'Mr D', 'Mr F') > zz <- 'discussion group' > name.list <- list(group = xx, name = yy, decription = zz) > name.list $group [1] 1 1 1 2 2 2 2 $name [1] "Mr A" "Mr B" "Mr C" "Mr D" "Mr E" "Mr D" "Mr F" $decription [1] "discussion group" |
參考:
blog.sina.com.cn/s/blog_4d9814240102vigp.html
到此這篇關于R語言數據類型深入詳解的文章就介紹到這了,更多相關R語言數據類型內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/zhao441354231/p/5970544.html