【R语言学习笔记】3、数据集的概念及向量,矩阵和数组

1、数据集的概念

按照某种格式来创建数据集,是任何数据分析的第一步

  • 1、选择一种数据结构来存储
  • 2、将数据输入或导入到这个数据结构中

向R中导入数据有很多方便的方法,可以手工输入数据,也可以从外部源导入数据,数据源可以是电子表格(excel)、文本文件(txt)、统计软件(SAS)和各类数据库(MYSQL)等。
数据集通常是有数据构成的一个矩形数组,行表示记录,列表示属性(字段)。如下面一个病例清单:
在这里插入图片描述
R拥有许多用于存储数据的对象类型,包括向量、矩阵、数组、数据框和列表。
这些数据结构在存储数据的类型、创建方式、定位和访问其中个别元素的方法等方面都有所不同。
在这里插入图片描述

2、R的基本数据结构

(1)向量

向量,用于存储数值型,字符型,逻辑型数据的一维数组
同一向量中无法混杂不同模式的数据
a、向量的创建:(关键字c)

  • 创造一个包含1到5的数字的向量
> a1 <- c(1:5)
> a2 <- c("one", "two", "three", "two")
> a3 <- c(TRUE, TRUE, FALSE, TRUE)
> a1
[1] 1 2 3 4 5
> a2
[1] "one"   "two"   "three" "two"  
> a3
[1]  TRUE  TRUE FALSE  TRUE

注意: 若混杂不同的数据类型时,里面的值会都被转成字符型,如:

> a4 <- c(1, 3, "three", TRUE)
> a4
[1] "1"     "3"     "three" "TRUE" 

b、添加

  • 添加数据
> b <- append(a1,7)
> b
[1] 1 2 3 4 5 7
  • 添加向量(在向量a1的第二个位置插入一个向量)
> c <- append(a1,c(8:10),after = 2)
> c
[1]  1  2  8  9 10  3  4  5

c、向量里某个值的获取

  • 如想获取向量b的第2个元素6,则:
> b <- c(1, 6, 3, 4, 8, 7)
> b[2]
[1] 6
  • 如想获取向量b的第2、5个元素6和8,则:
> b[c(2, 5)]
[1] 6 8
  • 如想获取向量b的第2到5个元素,则:
> b[c(2: 5)]
[1] 6 3 4 8

d、常见函数的使用

  • 如对向量b进行:求和函数sum(b)、求最大函数max(b)、求最小函数min(b)、求平均函数mean(b)、求方差函数var(b)、求标准差函数sd(b)
  • 阶乘prod(b)
> b <- c(1, 2, 3, 4, 5, 7)
> prod(b)
[1] 840
> prod(1:3)
[1] 6
  • 排序sort(b, decreasing = TRUE)(decreasing为true是从大到小,为false是从小到大)
> b <- c(1, 6, 3, 4, 8, 7)
> sort(b, decreasing = TRUE)
[1] 8 7 6 4 3 1
  • 反向rev(b)
> b <- c(1, 6, 3, 4, 8, 7)
> rev(b)
[1] 7 8 4 3 6 1
> rev(sort(b))
[1] 8 7 6 4 3 1

(2)矩阵

矩阵,用于存储数值型,字符型,逻辑型数据的二维数组
同一向量中无法混杂不同模式的数据
a、矩阵的创建(关键字matrix

  • 创建一个3行4列的矩阵,默认是按列填充。
  • 格式:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
    其中参数data是指定数据集,nrow是指定行数,ncol是指定列数,byrow是指定按行填充还是按列填充,默认为false,即按列填充,为true时是按行填充。dimnames指定行名和列名。
> mat <- matrix(c(1:12),nrow = 3,ncol = 4)
> mat
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> x <- c(2,45,68,94)
> rnames <- c("R1","R2")
> cnames <- c("C1","C2")
> newMatrix <- matrix(x, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames,cnames))
> newMatrix
   C1 C2
R1  2 45
R2 68 94

b、矩阵元素的获取
下面是获取矩阵mat的第2行元素,和获取第三行第二列的元素。取列同理。

> mat <- matrix(c(1:12),nrow = 3,ncol = 4)
> mat <- matrix(c(1:12),nrow = 3,ncol = 4)
> > mat[2,]
[1]  2  5  8 11
> mat[3,2]
[1] 6
  • 维度的获取:
> dim(mat)
[1] 3 4

可得到矩阵mat是3行4列

  • 添加列名:
> colnames(mat) <- c('序号','语文','英语','数学')
> mat
     序号 语文 英语 数学
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
  • 逻辑判断
    判断第二列是否大于5,返回true或者false。mat[,2] >=5
    返回第二列大于等于5的行mat[mat[,2]>=5,]

(3)数组

数组,数组与矩阵类似,但是维度可以大于二
格式: array(data = NA, dim = length(data), dimnames = NULL)
a、数组的创建
创建一个3维数组:

扫描二维码关注公众号,回复: 10249878 查看本文章
> dim1 <- c("A1", "A2", "A3")
> dim2 <- c("B1", "B2")
> dim3 <- c("C1","C2","C3","C4")
> d <- array(c(1:24), c(3,2,4), dimnames=list(dim1,dim2,dim3))
> d
, , C1

   B1 B2
A1  1  4
A2  2  5
A3  3  6

, , C2

   B1 B2
A1  7 10
A2  8 11
A3  9 12

, , C3

   B1 B2
A1 13 16
A2 14 17
A3 15 18

, , C4

   B1 B2
A1 19 22
A2 20 23
A3 21 24

b、获取

  • 获取数组维数
dim(d)> dim(d)
[1] 3 2 4
  • 获取每一维的第一行第二列的元素
> d[1,2,]
C1 C2 C3 C4 
 4 10 16 22 
  • 获取第二维的第三行第一列元素
> d[3,1,2]
[1] 9
发布了44 篇原创文章 · 获赞 5 · 访问量 4498

猜你喜欢

转载自blog.csdn.net/ljb0077/article/details/99692949
今日推荐