R语言的四种数据结构---向量
R中常用的数据结构有四种:向量、矩阵、数据库和列表
(1)基本操作
1.向量的创建
c()函数创建向量;seq()函数创建等差数列的向量;sample()从一列数字中随机抽取几个数;paste0()把数字和字符串有规律的组合起来
rm(list = ls()) #从指定的环境中删除对象
movie = read.csv("电影数据.csv", fileEncoding = "UTF-8", stringsAsFactors = F)c(1, 1, 1, 2, 3, 3, 1, 2, 4, 1, 2, 4, 4, 2, 3, 4, 1, 2, 3, 4)
## [1] 1 1 1 2 3 3 1 2 4 1 2 4 4 2 3 4 1 2 3 4
class(c)
#[1] "function"
c("a", "b", "c", "d")
## [1] "a" "b" "c" "d"
# seq(起始值, 终止值, 步长)
seq(0, 10, by = 2)
## [1] 0 2 4 6 8 10
1:10
## [1] 1 2 3 4 5 6 7 8 9 10
# sample(被抽取的数据集合, 抽取数量)
set.seed(1234)
sample(1:10, 5)
## [1] 2 6 5 8 9
paste0("x_", 1:5)
## [1] "x_1" "x_2" "x_3" "x_4" "x_5"
2.向量的引用
which()函数可以获取某个元素的位置;which.max()和which.min()函数可以直接获取最大值和最小值的位置
# 引用x向量中的第5个元素
x=c(1, 1, 1, 2, 3, 3)
x[5]
## [1] 3
# 想看看x向量中3所在的位置
which(x == 3)
## [1] 5 6
which.max(x)
## [1] 5
which.min(x)
## [1] 1
3.集合运算
求交集intersect();求并集union();求差集setdiff();
intersect(c(1, 2, 3, 3, 12, 4, 123, 12), c(1, 2, 3))
## [1] 1 2 3
union(c("狗熊会", "聚数据英才"), c("狗熊会", "助产业振兴"))
## [1] "狗熊会" "聚数据英才" "助产业振兴"
setdiff(10:2, 5:3)
## [1] 10 9 8 7 6 2
(2)常见类型
1.数值向量的花式玩法
小函数 | 完成功能 | 使用方法 |
---|---|---|
length | 提取向量的长度 | length(vector) |
max | 提取向量中的最大值 | max(vector) |
min | 提取向量中的最小值 |
min(vector) |
mean |
提取向量的平均值 | mean(vector) |
quantile | 提取向量的分位数 | quantile(vector,prob=seq(0,1,0,25)) |
sort | 将向量重新排序 | sort(vector) |
rank | 返回向量x的秩,即x中数字的大小顺序 | rank(vector) |
order | 返回一个向量升序排序后的数字在原数据中的位置 | order(vector) |
match | 在y中逐个查找x,并返回在y中匹配的位置,若无返回NA | match(vector) |
cut | 将数值型数据分区间转换成因子型数据,即将数值型数据离散化 | cut(x,breaks,label) |
median | 提取向量的中位数 | median(vector) |
# match函数
x = c(1, 1, 1, 2, 3, 3, 1, 2, 4, 1, 2, 4, 4, 2, 3, 4, 1, 2, 3, 4)
(y = letters[x]) # letters是一个内置字符串,里面储存26个字母字符
## [1] "a" "a" "a" "b" "c" "c" "a" "b" "d" "a" "b" "d" "d" "b" "c" "d" "a"
## [18] "b" "c" "d"
match(y, letters[1:4])
## [1] 1 1 1 2 3 3 1 2 4 1 2 4 4 2 3 4 1 2 3 4
# cut函数
# cut函数可以帮助我们完成一项数据分析的功能:连续数据离散化,也就是把连续型数据变成离散的定性数据来参与建模
(Age = sample(21:100, 20, replace = T))
## [1] 72 21 39 74 62 76 64 43 94 44 87 43 42 35 39 46 45 33 24 38
# 将年龄数据离散化
label = c('壮年', '中年', '长辈', '老年')
(ages = cut(Age, breaks = c(20, 30, 50, 70, 100), labels = label))
## [1] 老年 壮年 中年 老年 长辈 老年 长辈 中年 老年 中年 老年 中年 中年 中年
## [15] 中年 中年 中年 中年 壮年 中年
## Levels: 壮年 中年 长辈 老年
sort默认升序,添加decreasing=T可使变为降序。
order函数能够输出把元向量升序排序后,每个排序后数据在原始向量中的位置,命令x[order(x)]的实现效果和sort(x)一样。
# sort和order函数
set.seed(1234)
(x = sample(8, 5))
## [1] 1 5 4 6 7
sort(x)
## [1] 1 4 5 6 7
sort(x,decreasing=T)
## [1] 8 6 5 4 2
order(x)
## [1] 1 3 2 4 5
x[order(x)]
## [1] 1 4 5 6 7
2.字符向量的花式玩法
# nchar用来提取字符串的长度
nchar("欢迎关注狗熊会")
## [1] 7
# 看看数据集中的电影名字的长度分别是多少
nchar(movie$name)
## [1] 3 3 7 12 5 5 12 7 8 4 5 7 4 4 6 4 4 3 2
# 中英文的字符长度计算方法有不同
nchar("Welcome to follow the CluBear")
## [1] 29
# substr提取子字符串
substr("欢迎关注狗熊会", 1, 4)
## [1] "欢迎关注"
substr("一懒众衫小", 3, 5)
## [1] "众衫小"
# paste基本玩法
# collapse可以把一个向量内部的元素粘连起来,而sep则适用于把不同向量分别粘起来
paste(c("双11", "是个", "什么节日"), collapse = "")
## [1] "双11是个什么节日"
paste("A", 1:4)
## [1] "A 1" "A 2" "A 3" "A 4"
# paste花式玩法
paste(1:4, collapse = "")
## [1] "1234"
paste(1:4, sep="")
## [1] "1" "2" "3" "4"
paste("A", 1:4, sep="_")
## [1] "A_1" "A_2" "A_3" "A_4"
paste(LETTERS[1:4], 1:4, collapse = "_")
## [1] "A 1_B 2_C 3_D 4"
paste(LETTERS[1:4], 1:4, sep = "_", collapse = "|")
## [1] "A_1|B_2|C_3|D_4"
paste(LETTERS[1:4], 1:4)
## [1] "A 1" "B 2" "C 3" "D 4"
小函数 | 完成功能 | 使用方法 |
nchar | 提取字符串的长度 | nchar(vector0 |
substr | 从字符串char1提取子字符串 | substr(char1,begin,end) |
paste | 粘贴两个字符串 | paste(char1,char2) |
grep | 查找字符向量x中字符串char1的位置 | grep(char1,x) |
gsub | 将字符向量x中的字符char1替换为字符char2 | gsub(char1,char2,x) |
# grep返回movie的name中包含“青春”的行号8,movie[8, ]即提取出movie数据集的第8行
(index = grep("青春", movie$name))
## [1] 8
(young = movie[index, ])
## name boxoffice doubanscore type duration showtime director
## 8 谁的青春不迷茫 17798.89 6.4 爱情 108 2016/4/22 姚婷婷
## star1 index1 star2 index2
## 8 白敬亭 14759 郭姝彤 755
# 看看它的豆瓣评分和票房处于我们电影数据集中的什么位置
young$doubanscore > mean(movie$doubanscore)
## [1] TRUE
young$boxoffice > mean(movie$boxoffice)
## [1] FALSEsalary = c("22万", "30万", "50万", "120万", "11万")
(salary0 = gsub("万", "0000", salary))
## [1] "220000" "300000" "500000" "1200000" "110000"
mean(as.numeric(salary0))
## [1] 466000
median(as.numeric(salary0)) # 结果是科学计数法的形式
## [1] 3e+05
R语言的四种数据结构---向量相关推荐
- R语言的四种数据结构---数据框
数据框是最常见的数据结构,一般来讲,从csv或txt文件读入时就会自动存储为数据框对象. 与矩阵不同的是,矩阵只可以存储一种数据类型,而数据框可以存储多种类型,但是每一列必须为相同的数据类型 1.创建 ...
- vector 赋值_从零开始学习R语言(一)——数据结构之“向量”(Vector)
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...
- R语言使用sd函数计算向量数据的标准差
R语言使用sd函数计算向量数据的标准差 目录 R语言使用sd函数计算向量数据的标准差 R语言是解决什么问题的? R语言使用sd函数计算向量数据的标准差 安利一个R语言的优秀博主及其CSDN专栏: R语 ...
- R语言使用sort函数对向量数据进行排序、默认从小到大升序排序
R语言使用sort函数对向量数据进行排序.默认从小到大升序排序 目录 R语言使用sort函数对向量数据进行排序.默认从小到大升序排序 R 语言特点 R语言使用sort函数对向量数据进行排序.默认从小到 ...
- R语言使用mean函数计算向量数据的均值
R语言使用mean函数计算向量数据的均值 目录 R语言使用mean函数计算向量数据的均值 R语言是解决什么问题的? R语言使用mean函数计算向量数据的均值 安利一个R语言的优秀博主及其CSDN专栏: ...
- R语言使用length函数计算向量的长度
R语言使用length函数计算向量的长度 目录 R语言使用length函数计算向量的长度 R语言是解决什么问题的? R语言使用length函数计算向量的长度 安利一个R语言的优秀博主及其CSDN专栏: ...
- 简单介绍C语言使用四种方法初始化结构体
这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...
- R语言编程艺术#01#数据类型向量(vector)
R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...
- c语言饿结构_C语言的四种程序结构
C语言的四种程序结构 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电 ...
最新文章
- 零基础ui设计培训一定要知道字体设计规则
- 共面阻抗对高频PCB 设计中传输线阻抗控制的影响
- 【扩展推荐】Intervention/image 图片处理
- 2021年春季学期-信号与系统-第九次作业参考答案-第四小题
- 【Linux】18.设置静态ip的方法(Ubuntu系统、nas、Red-Hat系统)
- java蝇量模式_Head First设计模式——蝇量和解释器模式
- Python操作excel(.xlsx)封装类MyPyExcel V2.0
- FreeRTOS源码分析与应用开发06:软件定时器
- 定时任务莫名停止,Spring 定时任务存在 Bug??
- 通达信服务器文件是那个文件夹,通达信的公式在哪个文件夹?
- Matlab实现熵权法并计算权重和综合评分——附增完整代码和测试用例
- 检验入参合法性有哪些_参数检验和非参数检验是什么意思
- ednote服务器运行失败,Endnote安装出现错误的解决办法
- JSP水电费管理系统myeclipse开发mysql数据库web结构java编程
- 我看凯立德GPS软件的规划问题
- opencv之基本形状识别
- 给Scrum master的10条暖心建议
- centos修改磁盘uuid_Centos7 查看硬盘的UUID | 吴老二
- SP软件工程师不可不知的10个概念
- MySQL基础知识笔记