前情回顾
前面仔细对R的编辑环境和R包的使用进行了介绍,后面正式进入R的程序学习中。需要提醒的是,后续的学习需要一定程度地加快速度,因为缓慢的学习进程已经严重影响到了学习的积极性,前两天就产生了很严重的厌学情绪。因此,后续逐步调控慢慢加快学习进度,有些细节暂可不必细较,先保持能学习下去,每天都有较多的可消化学习内容和成果,学习效果底线是能完成所有习题。
废话不多说,开始今天的内容,计划今天完成R的数据输入的大部分内容(本来龟速学习可能需要共计一周的时间)。
小型数据库中的数据录入 变量 = 数据
直接再命令行窗口输入或者在R脚本中输入后点击source,注意输入的数据会一直存在,除非删除掉。语句类似于赋值语句"=",也可以用"<-"符号代替。输入的变量可在右上角的窗口看到:
应用c函数连接数据 变量 = c(a, b, c, d)
把一个变量用c函数连接多个数据,类似于python中的列表,查看或者调用数据时也是使用 变量[a:b] :查看从第a个值开始到第b个值,注意第一个值是从第1开始(不是第0)。
可以使用各种计算函数(如sum)来操作向量变量,但是向量中可能会有缺失值(NA),可以用"na.rm = True"来忽略掉缺失值,不加此参数赋值的话默认为False。
习题一:c和sum函数的使用
注意平均函数是mean(),而不是average()。
使用c, cbind和rbind结合变量 新变量 = c/cbind/rbind(变量1, 变量2, 变量3)
对不同的向量还可以继续用c函数连接,产生的新变量是一个连接在一起的单个变量(而不是二维变量)。因此,无法区分新变量里的数据是属于前面的哪个变量中,需要一个ID向量来表示。可以使用 rep 函数来生成重复数据的变量:
Id = rep(c(1, 2, 3, 4), each=8)
Id = rep(1 : 4, each=8)
其中向量序列(1,2,3,4)的产生也可以使用seq(from=1, to 4, by=1) ,去掉单词“each”,结果会编程新向量的重复,而不是每个值的连续分别重复,如下图:
使用cbind和rbind连接向量得到的是二位的向量,类似于表格一样,可以使用命令按行或者列进行选取。二者区别如下:
习题二:使用流行病学数据练习cbind函数的应用
使用cbind结合月份长度和Tb的数据定打印某行、某列和某值: 使用dim, nrow, ncol函数来确定Boar中动物和变量的数量:动物的数量是列长,也就是7;数据个数是行*列,共21个。注意不会使用的函数用 ?函数 来查询。
使用vector函数结合数据 变量 = vector(length = 8) 变量[1] = a 变量[2] = b .......
vector函数的用法和c函数类似,不同点在于要先定义向量的长度,并且在所有元素的赋值都完成之后才能使用。
习题三:使用流行病学数据练习vector函数的应用
用vector函数结合Tb数据,变量名为Tb2:
使用矩阵结合数据 矩阵名 = matrix(nrow=8, ncol=4) 按列赋值 colnames(矩阵名) = c("标签1", "标签2", "标签3")
简单说就是,首先定义特定大小的矩阵,然后按列进行赋值,最后用colnames函数加标签。结果和cbind函数产生的一样,有点类似于 vector函数和c函数的关系。
注意:as的用处,比如 矩阵名 = as.matrix(cbind(向量1, 向量2, 向量3, 向量4)) ,如果as.matrix函数的参数是矩阵则提示TRUE,否则FALSE。
习题四:对矩阵的操作
生成矩阵,并确定它的转置矩阵和逆矩阵,同时计算它和逆矩阵的乘积(结果是单位矩阵)。其中,t() 产生转置矩阵,solve() 产生逆矩阵,%*% 用来矩阵相乘。结果的单位矩阵中的一些数字为精确数字,查询资料得知,这和计算机制有关,计算结果只会无限接近单位矩阵。
学习感悟:又开始拿起来R了,并且调整了学习的速度,感觉又来啦!!以后学习就这样来,保持速度,坚守底线。今天对小量数据的输入方式基本掌握了,后面还有data.fram函数结合的方式留到下节再学。下节也要接触数据的载入了,这才是大数据用的最多的方式,期待中,加油~~
|
请发表评论