R软件学习笔记-3(简单运算)
来源:互联网 发布:40本网络禁书 下载 编辑:程序博客网 时间:2024/06/05 11:43
merge合并函数
###################################数据合并
ReportCard1<-read.table(file="ReportCard1.txt",header=TRUE) #从文本读数据到数据框ReportCard2<-read.table(file="ReportCard2.txt",header=TRUE)
ReportCard<-merge(ReportCard1,ReportCard2,by="xh") #合并数据并存入指定的数据框
order排序函数
######################数据排序
Ord<-order(ReportCard$math,na.last=TRUE,decreasing=TRUE) #按math的降序排序
a<-ReportCard[Ord,] #将排序结果保存在数据框a
Ord<-order(+ReportCard$sex,-ReportCard$math,na.last=TRUE) #按sex升序、math降序排序
is.na缺失函数
################缺失数据报告
a<-is.na(ReportCard$math) #判断哪个学生的math成绩为缺失NA
ReportCard[a,] #显示math缺失NA的学生信息
a<-complete.cases(ReportCard) #判断完整观测样本
ReportCard[!a,] #显示有任何一门成绩缺失的学生信息
install.packages("mice") #下载安装包
library("mice") #加载包mince
md.pattern(ReportCard) #生成缺失报告
na.omit剔除缺失函数
ReportCard<-na.omit(ReportCard) #剔除有缺失的样本,得到完整观测样本
基本算术运算
#计算每个人的总分和平均分,并加入到数据框ReportCard中,P62
attach(ReportCard) #简化数据框中域名的书写
SumScore<-poli+chi+math+fore+phy+che+geo+his #计算总分
detach(ReportCard)
AvScore<-SumScore/8 #计算平均分
ReportCard$sumScore<-SumScore #将总分放入数据框
ReportCard$avScore<-AvScore
names(ReportCard)
sum(is.na(ReportCard$sumScore)) #计算总分为缺失值的观测样本数
mean(complete.cases(ReportCard)) #计算完整观测样本的比例
dnorm标准正态分布
#############基本计算中的概率函数
x<-seq(from=-3,to=3,by=0.05)
y<-dnorm(x,0,1) #计算正态概率密度函数
plot(x,y,type="l",ylab="密度",main="正态分布的密度函数曲线图")
#################变量值的重编码 即: 将学生的平均成绩分为5组,分组后的变量为分类型变量,以因子方式组织
ReportCard<-within(ReportCard,{ #利用within函数修改域中数据
avScore[avScore>=90]<-"A" #“avScore>=90”的结果为逻辑型位置向量,取值为TRUE的元素赋值为A
avScore[avScore>=80 & avScore<90]<-"B" #此式等价于:ReportCard$avScore[avScore>=80 & avScore<90]<-"B"
avScore[avScore>=70 & avScore<80]<-"C"
avScore[avScore>=60 & avScore<70]<-"D"
avScore[avScore<60]<-"E"
})
%in%函数判断是否在该范围内,返回逻辑向量
flag<-ReportCard$avScore %in% c("A","B","C","D","E") #位置向量flag,%in% 的结果为逻辑型向量
ReportCard$avScore[!flag]<-NA #处理缺失值,对平均分等级不在A,B,C,D,E中的样本,强行赋予等级值NA
自定义函数
##############定义用户自定义函数
MyFun<-function(dataname1=x1,dataname2=x2,key=c){ #函数名MyFun,三个变量分别为:dataname1,dataname2,key
result<-merge(dataname1,dataname2,by=key)
return(result)
}
调用自定义函数
MyData<-MyFun(dataname1=ReportCard1,dataname2=ReportCard2,key="xh") #调用函数,三个变量赋值:ReportCard1,ReportCard2,xh
MyData<-MyFun(ReportCard1,ReportCard2,"xh") #调用函数的简便写法
矩阵基本运算
(m1<-matrix(1,nrow=2,ncol=2))
(m2<-matrix(2,nrow=2,ncol=2))
(mm1<-cbind(m1,m2)) #将矩阵m1和m2做列向合并
(mm2<-rbind(m1,m2)) #将矩阵m1和m2做行向合并
(mm3<-mm1%*%mm2) #矩阵的乘法,注意乘积的位置
结果如下
> (m1<-matrix(1,nrow=2,ncol=2))
[,1] [,2]
[1,] 1 1
[2,] 1 1
> (m2<-matrix(2,nrow=2,ncol=2))
[,1] [,2]
[1,] 2 2
[2,] 2 2
> (mm1<-cbind(m1,m2)) #将矩阵m1和m2做列向合并
[,1] [,2] [,3] [,4]
[1,] 1 1 2 2
[2,] 1 1 2 2
> (mm2<-rbind(m1,m2)) #将矩阵m1和m2做行向合并
[,1] [,2]
[1,] 1 1
[2,] 1 1
[3,] 2 2
[4,] 2 2
> (mm3<-mm1%*%mm2) #矩阵的乘法,注意乘积的位置
[,1] [,2]
[1,] 10 10
[2,] 10 10
> (mm3<-mm2%*%mm1)
[,1] [,2] [,3] [,4]
[1,] 2 2 4 4
[2,] 2 2 4 4
[3,] 4 4 8 8
[4,] 4 4 8 8
> diag(8) #创建8乘8的单位阵,P66
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 0 0 0 0 0 0 0
[2,] 0 1 0 0 0 0 0 0
[3,] 0 0 1 0 0 0 0 0
[4,] 0 0 0 1 0 0 0 0
[5,] 0 0 0 0 1 0 0 0
[6,] 0 0 0 0 0 1 0 0
[7,] 0 0 0 0 0 0 1 0
[8,] 0 0 0 0 0 0 0 1
> diag(c(1,2,3,4)) #创建对角阵
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 2 0 0
[3,] 0 0 3 0
[4,] 0 0 0 4
> diag(c(1,2,3,4),nrow=3,ncol=4)
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 2 0 0
[3,] 0 0 3 0
>
> diag(mm3) ##提取矩阵mm3的正对角元素
[1] 2 2 8 8
> diag(mm3)<-10 #将矩阵mm3的正对角元素均改为10
> mm3
[,1] [,2] [,3] [,4]
[1,] 10 2 4 4
[2,] 2 10 4 4
[3,] 4 4 10 8
[4,] 4 4 8 10
> diag(mm3)<-c(1,2,3,4) #将矩阵mm3的正对角元素改为1,2,3,4
> mm3
[,1] [,2] [,3] [,4]
[1,] 1 2 4 4
[2,] 2 2 4 4
[3,] 4 4 3 8
[4,] 4 4 8 4
>
> (mm3<-matrix(1:9,nrow=3,ncol=3,byrow=TRUE))
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> t(mm3) #转置矩阵
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
>
> mm3<-diag(c(1,2,3,4))
> solve(mm3) ##求矩阵mm4的逆矩阵
[,1] [,2] [,3] [,4]
[1,] 1 0.0 0.0000000 0.00
[2,] 0 0.5 0.0000000 0.00
[3,] 0 0.0 0.3333333 0.00
[4,] 0 0.0 0.0000000 0.25
> eigen(mm3) ##求矩阵的特征值和特征向量
$values
[1] 4 3 2 1
$vectors
[,1] [,2] [,3] [,4]
[1,] 0 0 0 1
[2,] 0 0 1 0
[3,] 0 1 0 0
[4,] 1 0 0 0
- R软件学习笔记-3(简单运算)
- R软件学习笔记-3(基本函数与运算)
- R软件学习笔记-5(R软件画图)
- R软件学习笔记-7(方差分析)
- R软件学习笔记-5(R语言绘图)
- R软件学习笔记-1
- R软件学习笔记-2
- R软件学习笔记-4(描述统计)
- R软件学习笔记-6(各种检验)
- R软件学习笔记(vector,Array,List,Data Frame)
- R软件学习笔记-8(回归分析)
- R软件学习笔记(vector,Array,List,Data Frame)
- 【学习笔记】熟练使用R软件
- R软件学习笔记—Legend
- R学习笔记3
- R笔记(简单数据处理)
- R语言学习笔记(3)
- R语言学习笔记(一)——数据结构与基本运算
- [Leetcode 55, Medium] Jump Game
- HDU 1026 Ignatius and the Princess I
- UITextField事件
- OAUTH协议
- Qt中 QString 和int, char等的“相互”转换
- R软件学习笔记-3(简单运算)
- vim中的常用命令
- 黑马程序员-----网络编程
- 在linux下连接MS SQL Server2008中SQL语句like中文
- [Leetcode 45, Hard] Jump Game II
- 串的基本用法(顺序存储结构)
- Android开发者必须深入学习的10个应用开源项目
- 前端测试系列---如何分析页面性能
- Linux中跳过的章节