【R笔记】为什么是R?
The R Project for Statistical Computing
今年打算更新一些R的学习笔记。为什么是R?因为穷呗!!我们现在常用的统计软件其实一般都是收费的,SAS就不说了动辄几百万,SPSS也是几十万的级别,STATA相对便宜,但其最便宜的版本(STATA IC)也得每年595刀,这不是我样的屌丝P民所能承担的。在学生时代就曾听过一个故事,说是某大佬发文章用了SAS,结果被人家SAS查到未购买授权,引发了侵权赔偿的一系列问题。在知识产权越来越受重视的今天,或许哪天这个故事就会发生在你的身上。而R是一个开源项目,完全免费。关键是R拥有数量极为庞大程序包(Package),可以快速实现各种统计功能,而且其他软件中尚不可用的、先进的统计方法也能够在R中快速更新。还有R软件很小,最新的windows版本3.6.2也不过80多个M,打开运算都很快!当然R是靠程序代码实现统计功能,而不能像SPSS、STATA和SAS JMP那样可以通过菜单来操作。
R统计步骤:跟其他软件使用类似,无非就是载入数据,选择合适的统计模型进行分析,然后进行解读。具体来说有如下几步:【1】数据录入/导入、处理;【2】确定统计模型/方法;【3】加载相应程序包;【4】使用相应的函数进行模型适用条件考察、统计分析及模型诊断;【5】结果解读。
R有很多的命令,但我们其实没必要都去记。归根结底,我们是在应用统计,至于统计方法怎么来的并不是我们关注的重点,软件只是我们快速实现复杂计算的一个工具而已,我们在使用的时候只要找到相应的帮助文件,按照格式进行书写就可以了。但有一些最基本的或者是很重要的,我们需要对其有所理解。
帮助文件的获取帮助:帮助>>手册(PDF文件),其他帮助文件可通过帮助菜单来实现;
帮助文档首页命令:help.start() ,等同于帮助>>Html帮助;
以 xx为关键词搜索帮助命令:help.search("xx")或??xx ,等同于帮助>>搜索帮助…,可以搜索程序包、函数等,可以了解其具体介绍,包括功能、格式、示例等;
查看函数xx的帮助(引号可以省略)命令:help("xx")或?xx ,等同于帮助>>R函数帮助(文本)…,可以搜索函数,获得具体介绍,包括功能、格式、示例等。
包是R中可以实现某类功能的函数、数据等集合,相当于一个一个的小的功能模块,模块中的不同函数可以实现各种功能。当你确定了统计模型/方法或者想要做的统计图后,就可以去查找那些包可以实现这些功能了,然后从库中载入这个包(库中没有就先下载),接下来就可以使用包中的函数直接进行分析了。安装R时会同时安装一些常用的默认包,还有大量的包可在使用时从CRAN中下载。应该说包是R中最让人欣喜的功能了。截止到2020年1月17日上午23点,CRAN包库里可用包已达到15323个,最近几乎每天都会有大量新包添加。网站https://cran.r-project.org/可以查看可用包。电脑中储存包的目录叫库(library)。在使用包时,必须先将包载入到当前的R工作环境,函数library()可以显示库中的包及其功能,命令search()可以告诉你哪些包已加载并可使用。
加载程序包:程序包>>加载程序包…,可通过命令library(预加载的包名称)来实现。
数据载入:可以直接录入,也可以直接从其他文件导入到指定的R数据结构(向量、矩阵、数组、数据框和列表)中。
其他文件的导入,如SAS、SPSS、STATA。foreign包中的read.ssd(),Hmisc包中的sas.get()可导入SAS文件;foreign包中的函数read.spss()、Hmisc包中的spss.get()函数可导入SPSS文件;foreign包中的read.dta()可导入STATA文件。
我们在《多元正态分布检验的R实现方法》一文中已有讲到STATA文件的导入,注意需要先将stata文件保存为12版本及以下,命令清单如下:
library(foreign) #载入程序包foreign
rm4 <- read.dta("D:/Temp/STATA/RM.dta") #新建对象rm,赋值为导入的名称为RM的STATA文件,并保存为数据框
rm4 #显示数据框rm4的内容
程序包>>安装程序包…,选择下载镜像,确定,选择要下载的程序包,确定。镜像可以选择0-Cloud[https],也可以选择中国境内的几个镜像,如下载失败可以换个试试。
当然也可以直接使用命令来进行安装
install.packages("xlsx") #安装程序包xlsx
install.packages("xlsxjars") #安装程序包xlsxjars
install.packages("rJava") #安装程序包rJava
install.packages("openxlsx") #安装程序包openxlsx
install.packages("readxl") #安装程序包readxl
安装成功会会显示程序包打开成功,MD5和检查也通过,程序包在什么位置,如xlsxjars包安装成功显示如下
【2】导入数据
setwd("D:/Temp") #设置默认工作路径
library(xlsx) #载入程序包xlsx
rm<-read.xlsx("RM.xlsx",1) #新建对象rm,赋值为导入的名称为RM的excel第1个sheet工作表,并保存为数据框文件。如果RM不在默认工作目录中,此处命令应把路径写完整:rm<-read.xlsx("D:/Temp/RM.xlsx",1)
rm #显示数据框rm的内容
如果你只想显示采用A方法的T0-T4的数据,最后一行命令可以改为:
rm([1:5],[3:7]) #显示数据框rm的第1-5行3-7列的内容
如果你不想显示第1列,命令除了上面的方法外,还可以直接简单写为:
rm[-1]
上面只是显示,如果你想新建的R数据框只导入B方法的数据,不显示第1-2列的内容,命令为:
rm<-read.xlsx("RM.xlsx",1,startRow=1,endRow=5)
rm[-1:-2]
Description:Read the contents of a worksheet into an R data.frame.
Usage
read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,startRow=NULL,endRow=NULL, colIndex=NULL, as.data.frame=TRUE, header=TRUE, colClasses=NA,keepFormulas=FALSE, encoding="unknown", password=NULL, ...)
read.xlsx2(file, sheetIndex, sheetName=NULL, startRow=1,colIndex=NULL, endRow=NULL, as.data.frame=TRUE, header=TRUE,colClasses="character", password=NULL, ...)
后面是对用法中的每一项是什么意思进行解释,然后是详细介绍以及示例。
错误: package or namespace load failed for ‘xlsx’: loadNamespace()里算'rJava'时.onLoad失败了,详细内容:
调用: fun(libname, pkgname)
错误: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
在安装R软件的时64位(RX64)和32位(R i386)默认同时安装的,在改用32位后这个问题得以解决。
library(openxlsx)
rm2<-read.xlsx("D:/Temp/RM.xlsx",1)
rm2
rm3<-read_excel("D:/Temp/RM.xlsx")
rm3
END