1.R语言简介与下载安装
- R语言其诞生于新西兰奥克兰大学,由Ross Ihaka 和Robert Gentleman开发,属于商业软件S语言的替代品;
- R语言是一款开源的编程类工具,专门用于数据清洗、整理、统计分析、可视化以及数据挖掘等方面,而且不受体系平台的限制。
在https://www.r-project.org/ 网站中可以下载到R语言,最好选择清华的镜像。
为了能够更好的写代码,可以下载RStudio软件,即R语言的GUI(Graphical User Interface)。 https://www.rstudio.com/
2.第三方包的下载与加载
使用代码下载:
install.packages(package_name)
手动下载:
使用代码加载
library(package_name)
require(package_name)
library 和require 都是加载包,区别在于,输出的错误信息不一致。
3.怎样查看资助文档
help(lda,package='MASS')
help.search('dbscan')
library(lmtest)
library(car)
apropos('test')
RSiteSearch('Hosmer-Lemeshow') # 拟合度检验
4.R语言中的数据布局
向量的创建
目标抽取法
#手工输入法
w<-c(a,b,c,d) # 数值
c("李四","张三")√ #字符
c("李四","张三")× ## 需要用英文逗号
#seq方法
w<-seq(from,to,by) # by 步长
w2<-seq(from,to,length) #length 序列长度
x<-seq(from=-5,to=5,length=1000)
#重复天生法
rep(x,times) #times 指定x的循环次数
rep(x,each) #each 指定x其中的循环次数
向量的获取
#索引
x<-c(1,4,6,9)
x[3]
#实例:取出大于5的元素
index<-which(x>5)
x[index]
x>5
x[x>5]
向量的数据类型转换
函数
| 含义
| is.integer
| 判断向量的元素是否为整数型
| is.numeric
| 判断向量的元素是否为实数型
| is.character
| 判断向量的元素是否为字符型
| is.Date
| 判断向量的元素是否为日期型
| as.integer
| 将向量元素强制转换为整数型
| as.numeric
| 将向量元素强制转换为实数型
| as.character
| 将向量元素强制转换为字符型
| as.Date
| 将向量元素强制转换为日期型
| #实例 日期转换
%m 数字月份 01-12
%d 数字日期 01-31
%y 数字年份后两位 01-99# 1969-2068
Sys.times() #返回当前时间
Sys.Date() # 返回当前日期
特殊值
特殊值的表现
| 含义
| 判断
| NA
| 缺失值
| is.na
| NULL
| 空值
| is.null
| NaN
| 不确定值
| is.nan
| Inf
| 无穷值
| is.inf
| 向量的因子化转换
factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x))
常用数学函数
四则运算
符号
| 意义
| +
| 加
| -
| 减
| *
| 乘
| /
| 除
| ^
| 乘方
| %/%
| 取商
| %%
| 取余
| 函数
| 意义
| abs(x)
| 绝对值或者模
| sqrt(x)
| 开方
| exp(x)
| 指数
| log(x) , log10(x) , log(x,n)
| 对数
| sin(x),cos(x),tan(x)
| 三角函数(正弦、余弦、正切)
| asin(x), acos(x),atan(x)
| 反三角函数
| sinh(x),cosh(x),tanh(x)
| 双曲函数
| asinh(x),acosh(x),atanh(x)
| 反双曲函数
| facrorial(x)
| 阶乘x!
| choose(n,k)
| 二项系数(n,k) n!/[k!(n-k)!]
| gamma(x)
| Gamma 函数
| floor(x)
| 向下取整,<x 最大整数
| ceiling(x)
| 向上取整,>x 最小整数
| trunc(x)
| 靠近0取整,trunc(1.5)=1,trunc(-1.5)=-1,
| round(x)
| 四舍五入
| 5.矩阵
矩阵的构造
通常意义上,矩阵紧张是指二维矩阵,由列和行两个维度构成。
- matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
#data 指定一个用于构造矩阵的一维向量;
nrow ncol分别指定行列数;
byrow:bool类型的参数,指在矩阵构造过程中,元素是否按照行风格添补,默认为FALSE;
dimnames设置行列名称
matrix(c(1,2,3,4),2,2)
matrix(c(1,2,3,4),2,2,byrow = TRUE,dimnames=list(c('A','B'),c('first','second')))
- as.matrix(x,rownames.force=NA)
x:指定一个数据框,并将其强制转换为矩阵;
rownames.force:bool类型的参数,将x强制转换为矩阵后,矩阵是否包罗字符型的列名称,默认为NA,表现矩阵列名称与数据框变量名称一致;
矩阵的索引
位置索引
mat4<-matrix(1:24,ncol=4)
mat4
mat4[3,]
mat4[,2]
mat4[3,2]
mat4[2:5,2:3]
#取出奇数行偶数列的数据
mat4[seq(1,nrow(mat4),by=2),seq(2,ncol(mat4),by=2)]
基于矩阵运算的常用函数
- t() #矩阵的转置
- ginv() #矩阵的逆
- solve(a,b) #求解方程ax=b,默认b为单位向量
- t(A) %*% B #矩阵内积 crossprod(A, B)#矩阵内积
outer(x, y)#矩阵外积 得到数组
x <- matrix(c(1,2,3,4,5,6),2,3);
y <- matrix(c(1,2,3,1,2,3),2,3);
z <- outer(x,y);
class(z);
z
6.数据框
构造数据框
不管是向量照旧矩阵,它们的元素都是同质的。
数据框的构造有两种途径,一种是使用data.frame函数手动创建或者使用as.data.frame天生。
- data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
...:指定多个长度相称的向量,用于构造数据框;
row.names:指定数据框的行名称,默认为1到n的整数;
check.rows:bool类型的参数,是否查抄行名称row.names与数据框的行数一致,默认为FALSE;
check.names:bool类型的参数,是否查抄数据框列名称的公道性和重复性,默认为TRUE;
fix.empty.names:bool类型的参数,如果数据框没有列名称,是否将其修正为V1、V2……,默认为TRUE;
stringsAsFactors:bool类型的参数,是否将字符串向量强制转换为因子型向量,默认为TRUE;
as.data.frame(x, row.names = NULL)
x:指定待转换为数据框的对象,可以是列表,也可以是矩阵;
id <- 1:11;
name <- c('白月初','王富贵','涂山苏苏','梵云飞','涂山雅雅','涂山容容','王权富贵','东方淮竹','月初','王权霸业','厉雪扬');
birthday <- c('1989/7/16','1990/3/12','1992/8/15','1991/9/19',
'1993/4/17','1987/6/13','1994/4/21','1990/3/7',
'1990/12/3','1989/8/18','1993/7/19');
gender <- c('男','男','女','男','女','女','男','男','男','男','女');
height <- c(167,172,168,169,173,175,180,169,178,189,167);
weight <- c(65.3,70.2,55.8,70.4,68.9,67.4,74.7,70.5,77.8,85.6,53.8);
# 将向量组合为数据框
stu_info <- data.frame(id,name,birthday,gender,height,weight);
# 数据预览
View(stu_info) # V 大写
常用函数
函数
| 含义
| str
| 查看数据框的布局。包括行数、列数及变量的数据类型
| summary
| 查看数据的统计信息
| names
| 返回数据框的变量名
| dim
| 返回数据框的行列数
| nrow/ncol
| 仅返回数据框的行数/列数
| class
| 返回某个对象所属的数据布局、数据类型
| head/tail
| 预览数据的前/后N行
| $
| 从数据框中提取某个元素
| [ ]
| 索引
| subset
| 提取子集
| transform
| 基于数据框衍生新变量
| rbind/cbind
| 多个矩阵或数据框之间的行归并与列归并
| #从门生信息表中筛选出身高不低于170的男生
subset(x=stu_info,subset=gender=='男'&height>=170)
7.列表
列表雷同于一个大熔炉,可以存储任意一种数据对象,列表的索引有3种形式,分别是单中括号、双中括号以及美元符号。
# 创建组成列表元素的对象
constant <- 27
vector <- c('本科','本科','硕士','本科','博士')
mat <- matrix(data = 1:9, ncol = 3)
df <- data.frame(id = 1:5, age = c(23,25,28,25,26),
gender = c('男','男','女','女','女'),
income = c(12500,8500,13000,15000,9000))
# 构造列表
list_object <- list(A = constant, vector, C = mat, D = df)
# 返回列表
list_object
View(list_object)
8.控制流语句及自定义函数
控制流语句
if(条件)
{执行A}
else
{执行B}
For(i in )
{执行}
while(条件)
{执行}
自定义函数
func_name<-function(parameters)
{ func_expression
return(result)
}
# 心形函数
func_heart <- function(r,theta)
{a <- 2*r*(sin(theta)-0.5*sin(2*theta))
b <- 2*r*(cos(theta)-0.5*cos(2*theta))
out <- list(a,b)
return(out)
}
9.lapply族函数
tapply函数的使用:用于向量的分组统计。
tapply(x,INDEX,FUN=NULL,...,simplify=TRUE)
res2=tapply(X=iris$Sepal.Width,INDEX=iris$Species,FUN=summary)
res2
apply函数用于矩阵轴的统计。
apply(X,MARGIN,FUN,...)
#MARGIN如果为1,就表现对矩阵的每一行进行统计盘算,如果为2,就表现对每一列做统计运算。
lapply和Sapply函数
Lapply 函数用于对向量或者列表元素的盘算,Sapply函数
是Lapply 函数升级。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |