R语言实战——1.5高级数据管理
高级数据管理
01
数据的标准化
默认情况下,函数scale()对矩阵或数据框的指定列进行均值为0,标准差为1的标准化
如:newdata<-scale(mydata)
要对每一列进行任意均值和标准差的标准化,可以使用如下的代码:
newdata<-scale(mydata)*SD+M
M为想要的均值,SD为想要的标准差;在非数值列上使用scale()函数会报错,要对指定列而不是整个矩阵或数据框进行标准化,可以使用如下代码:
Newdata<-transfrom(mydata,myvar=scale(myvar)*10+50
此句将变量myvar标准化为均值50、标准差为10的变量
02
函数
概率分布函数
示例:
设定随机数种子
在每次生成伪随机数时,函数都会使用一个不同的种子,因此会产生不同的结果;可以通过set.seed()显示指定这个种子,让结果可以重现
生成多元正态数据
目的是获取来自给定均值向量和协方差阵的多元正态分布数据
mvrnorm(n,mean,sigma)
n为想要的样本大小,mean为均值向量,sigma为方差-协方差矩阵
字符处理函数
从文本型数据中抽取信息或打印输出和生成重设文本的格式
注意,函数grep()、sub()和strsplit()能够搜索某个文本字符串(fixed=TRUE)或
某个正则表达式(fixed=FALSE,默认值为FALSE)。正则表达式为文本模式的匹配提供了一套清晰而简练的语法。
其他实用函数
\n表示新行,\t表示制表符,\’表示单引号,\b表示退格
03
将函数用于矩阵和数据框
apply函数可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上,apply()函数的使用格式为:apply(x,MARGIN,FUN,…)
x为数据对象,MARGIN是维度的下标,FUN是由自己指定的函数,…包括了任何想传递给FUN的参数(在矩阵和数据框中,MARGIN=1表示行,MARGIN=2表示列)
如图所示可求出每一行的均值;apply(mydata, 2,mean,trim=0.2)表示求出基于中间60%的列数据的均值,忽略最高和最低20%的数据
lapply() 和 sapply()可将函数应用到列表list上
04
控制流
作用:重复执行某些语句;仅在满足特定条件的情况下执行另外的语句
语句statement可以为一条或一组复合语句,即包含在{}中的语句
条件是一条最终被解析为真TRUE或假FALSE的表达式
表达式是一条数值或字符串的求值语句
序列是一个数值或字符串序列
循环结构,重复执行一个或一系列语句,直到某个条件不为真为止
For结构,重复执行一个语句,直至某个变量的值不包含在序列seq中为止
for (var in seq) statement
While结构,重复执行一个语句,直到条件不为真为止
while (condition) statement
条件执行:一条或一组语句仅在满足一个指定条件时执行
if-else结构,条件为真时执行语句,条件为假时执行另外的语句
if (condition) statement
if (condition) statement else statement2
ifelse结构,是if-else结构紧凑版本
ifelse (condition, statement1, statement2)
switch结构,根据一个表达式的值选择语句执行
switch (expr,…) …
是与expr的各种可能输出值绑定的语句
05
用户自编函数
myfunction<-function(arg1,arg2,…){
statements
return(object)
}
函数中的对象只在函数内部使用,返回对象的数据类型是任意的,从标量到列表皆可
06
整合与重构
转置:t(数据集名)
整合数据:在R中使用一个或多个by变量和一个预先定义好的函数来折叠数据较容易
aggregate(x,by,FUN)
x为待折叠的数据对象;by为一个变量名组成的列表,这些变量将被去掉以形成新的观测;FUN用于计算描述性统计量的标量函数,用于计算新观测中的值
Group.1表示汽缸数量(cyl),group.2表示挡位数(gear),如拥有四个汽缸和三个挡位车型的每加仑汽油行驶英里数(mpg)均值为21,5
Reshape2包
首先,要将数据融合,以使每一行都是唯一的标识符-变量组合,然后将数据重铸成想要的任何形状,在重铸过程中,可以使用任何函数对数据进行整合。
融合:将数据重构为该格式,每个测量变量独占一行,行中带要有唯一确定这个测量所需的标识符变量,标识符变量可以由多个类名复合指定
如:library(reshape2)
md<-melt(mydata,id=c(“ID”,”Time”))
在该例中,指定的唯一标识符变量为ID 和Time
重铸:dcast()函数读取已融合的数据,并使用自定义提供的公式和一个可选的用于整合数据的函数将其重塑
newdata<- dcast(md,formula,fun.aggregate)
md为已融合的数据,formula描述想要的最后结果,fun.aggregate是可选的数据整合函数
如:dcast(md,ID+Time~variable)表示按ID和Time不重复排列组合形成的表头进行数据填充
dcast(md,ID+variable~Time)表示按ID和变量不重复排列组合形成的表头进行数据填充
我知道你在看哟