在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
【转!!】Zhao-Pace https://www.cnblogs.com/zhao441354231/p/5970544.html
1. 向量(一维数据): 只能存放同一类型的数据 语法: c(data1, data2, ...), 访问的时候下标从1开始(和Matlab相同); 向量里面只能存放相同类型的数据. > x <- c(1,5,8,9,1,2,5) > x [1] 1 5 8 9 1 2 5 访问: > x[-(1:2)] # 不显示第1,2个元素 [1] 8 9 1 2 5 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: 用来指定水平的名字; > a <- c(6,1,3,0) > b = as.character(a) > b [1] "6" "1" "3" "0" exclude: 一个值向量, 表示从向量x里面剔除的水平值. nmax: 水平数目的上界. > 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) 因子用来存放变量或者有序变量, 这类变量不能用来计算, 而只能用来分类或者计数. 一般因子表示分类变量, 有序因子用来表示有序变量. 创建一个因子: > 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" 创建一个有序因子: > 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表示按行存放数据; > 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函数那么像) > 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,...为每列的数据. > 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 数据访问: > df$name [1] Mr A Mr B Mr C Levels: Mr A Mr B Mr C > df[1] 6. 列表(list): 可以存放不同类型的数据 语法: list(name1=component1, name2=component2, ...) > 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"
1. 向量(一维数据): 只能存放同一类型的数据 语法: c(data1, data2, ...), 访问的时候下标从1开始(和Matlab相同); 向量里面只能存放相同类型的数据. > x <- c(1,5,8,9,1,2,5) > x [1] 1 5 8 9 1 2 5 访问: > x[-(1:2)] # 不显示第1,2个元素 [1] 8 9 1 2 5 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: 用来指定水平的名字; > a <- c(6,1,3,0) > b = as.character(a) > b [1] "6" "1" "3" "0" exclude: 一个值向量, 表示从向量x里面剔除的水平值. nmax: 水平数目的上界. > 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) 因子用来存放变量或者有序变量, 这类变量不能用来计算, 而只能用来分类或者计数. 一般因子表示分类变量, 有序因子用来表示有序变量. 创建一个因子: > 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" 创建一个有序因子: > 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表示按行存放数据; > 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函数那么像) > 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,...为每列的数据. > 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 数据访问: > df$name [1] Mr A Mr B Mr C Levels: Mr A Mr B Mr C > df[1] 6. 列表(list): 可以存放不同类型的数据 语法: list(name1=component1, name2=component2, ...) > 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" |
请发表评论