R语言实战---02--数据结构

数据集结构

数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。

不同的行业对于数据集的行和列叫法不同。统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据挖掘和机器学习学科的研究者则把它们叫作示例(example)和属性(attribute)。(摘录自R语言实战第2版)

R 的数据结构

R中有许多用于存储数据的结构,包括标量、向量、数组、数据框和列表。
R可以处理的数据类型(模式)包括数值型、字符型、逻辑型(TRUE/FALSE) 、复数型(虚数) 和原生型 (字节)。
数据结构类型示例如下:
在这里插入图片描述

1. 向量

向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来
创建向量。

a = c(1,2,3,4,5)
b = c("a","b","c")
c = c(TRUE,FALSE,TRUE,FALSE)
d = c(1,2,"one",TRUE)
a
b
c
d
# r中下标从1开始
d[1]
print(typeof(d[1]))

输出结果:
在这里插入图片描述注意:向量a的值是数值型,b的值是字符型,c的值是布尔型,d的值都是字符型。
如果一个向量中既又数值型,又有字符型或者布尔型,则其内的值都变为字符型。

2. 矩阵

矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通
过函数matrix()创建矩阵。

# matrix的使用方法
mymatrix = matrix(vector, nrow=number_of_rows, ncol=number_of_columns, 
                    byrow=logical_value, dimnames=list(  
                    char_vector_rownames, char_vector_colnames))
# vector是包含矩阵的向量,nrow,ncol分别是行列的数目,byrow表示矩阵是否按行填充,默认是按照列。dimnames表示行列名字

# 示例,生成一个3行4列的矩阵
mymatrix = matrix(c(1:12),3,4,byrow = TRUE,dimnames = list(c("a","b","c"),c("d","e","f","h")))

# 矩阵元素的提取
# 矩阵中元素的提取、
# 以下标来取
mymatrix[1,]     # 取第一行
mymatrix[,1]     # 取第一列
mymatrix[1,1]     # 取第一行第一列的元素
# 以行列名字来取
mymatrix["a",]     # 取"a"的这一行
mymatrix[,"d"]     # 取"d"的这一列
mymatrix["a","d"]    # 取"a"行,"d"列的元素

输出结果:
在这里插入图片描述
注意:行列名字一定要与创建的矩阵行列的数目对应。

3.数组

数组(array)与矩阵类似,但是数组的的维度是可以大于2的。 可以用array()函数创建,其创建形式如下:

# 数组的使用
myarray <- array(vector, dimensions, dimnames)
# vector表示创建数组的向量,dimensions是维度,dimnames是行和列的名字。

# 示例
# 以向量vec来创建一个三维的数组分别对应(2,3,4),各个维度的名字分别为dim1_name,dim2_name,dim3_name
dim1_name = c("a1","a2")
dim2_name = c("b1","b2","b3")
dim3_name = c("d1","d2","d3","d4")
vec = 1:24
vec
my_array = array(vec, c(2,3,4),dimnames = list(dim1_name,dim2_name,dim3_name))
my_array

结果如下:
在这里插入图片描述
注意:行列名字一定要与创建的矩阵行列的数目对应。

4.数据框 (dataframe)

数据框中不同的列可以包含不同模式(数值型、字符型等)的数据,所以数据框的使用更为常见。

# 数据框的使用
age = c(20,21,22,32)
name = c("li","wang","bai","liu")
richness = c("100yuan","200yuan","300yuan","1yuan")

mydata =  data.frame(age,name,richness,row.names = c(5,4,3,2))
# 拿到数据框的元素
mydata[1,]
mydata[,1]
mydata[1,1]
mydata$age
# 生成单位矩阵表
table(mydata$age,mydata$name)
5.因子
# 转换为因子
status <- c("Poor", "Improved", "Excellent", "Poor")
sta = factor(status,ordered = TRUE)
6.列表
#列表 列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下

g = "My First List"
h = c(25, 26, 18, 39) 
j = matrix(1:10, nrow=5) 
k = c("one", "two", "three")
mylist = list(title = g,ages = h,j,k)
mylist$ages[1]
mylist[[3]][1,2]

数据的输入

R语言本身就是应用数据分析以及可视化的。
在应用于数据分析的时候,就是要处理各种数据,所以数据的输入就是我们要处理的首要问题。数据输入主要分为两种:1.使用键盘输入数据;2.外部输入数据。

代码(附)

# 向量:是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来
创建向量
a = c(1,2,3,4,5)
b = c("a","b","c")
c = c(TRUE,FALSE,TRUE,FALSE)
d = c(1,2,"one",TRUE)
a
b
c
d
print(typeof(c[1]))
# r中下标从1开始
d[1]
print(typeof(d[1]))

# 矩阵:是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵

mymatrix = matrix(c(1:12),3,4,byrow = TRUE,dimnames = list(c("a","b","c"),c("d","e","f","h")))
mymatrix

# 矩阵中元素的提取、
# 以下标来取
mymatrix[1,]
mymatrix[,1]
mymatrix[1,2]
# 以行列名字来取
mymatrix["a",]
mymatrix[,"d"]
mymatrix["a","d"]

x = matrix(c(1:10),nrow = 2)
x



# 数组
# 以向量vec来创建一个三维的数组分别对应(2,3,4),各个维度的名字分别为dim1_name,dim2_name,dim3_name

dim1_name = c("a1","a2")
dim2_name = c("b1","b2","b3")
dim3_name = c("d1","d2","d3","d4")

vec = 1:24
vec
my_array = array(vec, c(2,3,4),dimnames = list(dim1_name,dim2_name,dim3_name))
my_array


# 数据框 :不同的列可以包含不同模式(数值型、字符型等)的数据

age = c(20,21,22,32)
name = c("li","wang","bai","liu")
richness = c("100yuan","200yuan","300yuan","1yuan")

mydata =  data.frame(age,name,richness,row.names = c(5,4,3,2))
mydata[1,]
mydata[,1]
mydata[1,1]
mydata$age
# 生成单位矩表
table(mydata$age,mydata$name)


# 因子
status <- c("Poor", "Improved", "Excellent", "Poor")
sta = factor(status,ordered = TRUE)
sta

#列表 列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下

g = "My First List"
h = c(25, 26, 18, 39) 
j = matrix(1:10, nrow=5) 
k = c("one", "two", "three")
mylist = list(title = g,ages = h,j,k)
mylist$ages[1]
mylist[[3]][1,2]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值