摘要:今天的笔记内容是R语言中数据创建、随机自动生成、查看、转化相关基础知识。包括cbind、rbind、rnorm、runif、rep、dim、apply、str等的用法。
R语言数据处理基础笔记
创建数据
- 正态分布
随机正态分布数据可以用rnorm
函数生成,下面生成8个随机数值,平均值为1,标准差为2
| > rnorm(8,mean=1,sd=2) |
| [1] 1.2431291 1.9648432 -2.4450025 -0.7330347 |
| [5] 3.2119733 2.3628804 0.7375560 4.6286765 |
- 均匀分布
利用runif
函数生成4个随机数,服从最小值为3,最大值为5的均匀分布。
| > runif(4,min = 3,max = 5) |
| [1] 3.627561 4.834160 4.783988 3.289960 |
- 生成重复值
rep
函数生成重复值,下面为将1重复3次。
一个简单实例数据
R语言中1:20
表示生成从1到20的数字内容,dim
表示数据框的维度。下面生成一个五行四列的矩阵。
| > a <- 1:20 |
| > dim(a) <- c(5,4) #设置a为5行4列 |
| > a |
| [,1] [,2] [,3] [,4] |
| [1,] 1 6 11 16 |
| [2,] 2 7 12 17 |
| [3,] 3 8 13 18 |
| [4,] 4 9 14 19 |
| [5,] 5 10 15 20 |
letters
表示从a依次生成小写字母,LETTERS
表示依次生成大写字母,利用colnames
和rownames
对矩阵的列名和行名进行修改。
| > colnames(a) <- letters[1:4] #列名 |
| > a |
| a b c d |
| [1,] 1 6 11 16 |
| [2,] 2 7 12 17 |
| [3,] 3 8 13 18 |
| [4,] 4 9 14 19 |
| [5,] 5 10 15 20 |
| > rownames(a) <- LETTERS[1:5] #行名 |
| > a |
| a b c d |
| A 1 6 11 16 |
| B 2 7 12 17 |
| C 3 8 13 18 |
| D 4 9 14 19 |
| E 5 10 15 20 |
查看刚刚创建数据的最大值、最小值、行数、列数:
| > max(a) |
| [1] 20 |
| > min(a) |
| [1] 1 |
| > nrow(a) #行数 |
| [1] 5 |
| > ncol(a) #列数 |
| [1] 4 |
apply
表示对数据按每一行(1)或者每一列(2)进行操作,计算每一列的方差、中值偏差、均值:
| > apply(a,1,var) #对a的每一行计算方差 |
| [1] 41.66667 41.66667 41.66667 41.66667 41.66667 |
| > apply(a,1,mad) #对a的每一行计算中值差 |
| [1] 7.413 7.413 7.413 7.413 7.413 |
| > apply(a,2,mean) #对a的每一列计算平均值 |
| [1] 3 8 13 18 |
对矩阵进行转置操作:
| > expr = t(a) |
| > expr |
| [,1] [,2] [,3] [,4] [,5] |
| [1,] 1 2 3 4 5 |
| [2,] 6 7 8 9 10 |
| [3,] 11 12 13 14 15 |
| [4,] 16 17 18 19 20 |
| > str(expr) |
| int [1:4, 1:5] 1 6 11 16 2 7 12 17 3 8 ... |
数据类型和转换
刚刚创建的数据为矩阵(matrix
)格式,可以使用is.matrix(a)
来检测。
| > is.matrix(a) |
| [1] TRUE |
| > is.vector(a) |
| [1] FALSE #不是向量,所以显示FALSE |
如果想把矩阵转化为数据框data.frame
,只需要使用as.data.frame()
命令。
| > is.data.frame(a) |
| [1] FALSE |
| > is.data.frame(as.data.frame(a)) |
| [1] TRUE |
数据的合并与组合
在Linux中有paste
和cat
命令能对表格(矩阵)按照行或者列进行合并(点击这里跳转阅读),R语言中也有类似的命令cbind
和rbind
,接下来首先创建两个2×2的矩阵。
| > a <- matrix(1:4,2,2) |
| > a |
| [,1] [,2] |
| [1,] 1 3 |
| [2,] 2 4 |
| > b <- matrix(5:8,2,2) |
| > b |
| [,1] [,2] |
| [1,] 5 7 |
| [2,] 6 8 |
使用cbind
将两部分数据按列合并,即左右两坨横着拼起来。
| > cbind(a,b) |
| [,1] [,2] [,3] [,4] |
| [1,] 1 3 5 7 |
| [2,] 2 4 6 8 |
使用rbind
按照行进行合并,即上下两部分合在一起。
| > rbind(a,b) |
| [,1] [,2] |
| [1,] 1 3 |
| [2,] 2 4 |
| [3,] 5 7 |
| [4,] 6 8 |
数据的中心化和标准化
数据分析时,不同数据有不同的特征和衡量差异,需要对数值进行中心化(数据减去均值得到)和标准化(在中心化后除以标准差)。
R语言中实用scale
函数直接完成上述步骤,比如对1,2,3
三个数进行处理,得到如下结果。
| > scale(1:3) |
| [,1] |
| [1,] -1 |
| [2,] 0 |
| [3,] 1 |
| attr(,"scaled:center") |
| [1] 2 |
| attr(,"scaled:scale") |
| [1] 1 |
参考资料:
| http://www.ehbio.com/Bioinfo_R_course/Rbasic.html |
| https://blog.csdn.net/qq_27586341/article/details/91365165 |
本文由mdnice多平台发布
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!