R,作为一个非常灵活的平台,是专用于探索、展示和理解数据的语言,一种为统计计算和绘图而生的语言和环境,也是统计、预测分析和数据可视化的全球通用语言,它提供各种用于分析和理解数据的方法,从最基础的到最前沿的,无所不包。
1、包
包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。计算机上存储包的目录
称为库(library)。函数.libPaths()能够显示库所在的位置, 函数library()则可以显示库中
有哪些包。
R自带了一系列默认包(包括base、datasets、utils、grDevices、graphics、stats
以及methods),它们提供了种类繁多的默认函数和数据集。其他包可通过下载来进行安装。安装
好以后,它们必须被载入到会话中才能使用。命令search()可以告诉你哪些包已加载并可使用。
下载安装包:install.packages() 。例如,包gclus中提供了创
建增强型散点图的函数。可以使用命令install.packages("gclus")来下载和安装它。
查看包:installed.packages()
载入包:library()
更新包:update.packages()
演示示例:help(package="package_name") 载入一个包之后,就可以使用一系列新的函数和数据集了。包中往往提供了演示性的小型数据集和示例代码,能够让我们尝试这些新功能。帮助系统包含了每个函数的一个描述(同时带有
示例),每个数据集的信息也被包括其中。
2、包的示例实践
任务描述:
(1) 打开帮助文档首页,并查阅其中的“Introduction to R”。
(2) 安装vcd包(一个用于可视化类别数据的包)。
(3) 列出此包中可用的函数和数据集。
(4) 载入这个包并阅读数据集Arthritis的描述。
(5) 显示数据集Arthritis的内容(直接输入一个对象的名称将列出它的内容)。
(6) 运行数据集Arthritis自带的示例。如果不理解输出结果,也不要担心。它基本上显示
了接受治疗的关节炎患者较接受安慰剂的患者在病情上有了更多改善。
(7) 退出。
代码清单:
help.start()
install.package("vcd")
help(package="vcd")
library(vcd)
help(Arthritis)
Arthritis
example(Arthritis)
q()
3、输入
可供R输入的数据源
3.1 键盘输入(使用小数据集)
> my<-data.frame(name=character(0),age=numeric(0),weight=numeric(0)) ##numeric(0)的赋值语句将创建一个指定模式但不含实际数据的变量
>my<-edit(my) ##调出数据编辑器
>my ##查看
>my<-edit(my) ##再次编辑,相当于fix(my)
>edit(my) ##输出查看且再次编辑
3.2 从带分隔符的文本文件导入数据
my<-read.table(file,header=TRUE/FALSE,sep=","/"\t",row.names="name")
##file是一个带分隔符的ASCII文本文件,header是一个表明首行是否包含了变量名的逻
辑值(TRUE或FALSE),sep用来指定分隔数据的分隔符,row.names是一个可选参数,用以指
定一个或多个表示行标识符的变量。
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", row.names, col.names,
as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text)
file | 要处理的文件。可以用字符串指定文件名,也可以使用函数,如:file('file.dat',encoding='utf-8') |
header | 首行是否为字段名。如果不指定,read.table()会根据行标签进行判断,即如果首行比下面的行少一列,就是header行 |
col.names | 如果指定,则用指定的名称替代首行中的列名称 |
sep | 指定分隔符。默认为空白符(空格,制表符,换行符等)。可以指定为' ', '\t'等 |
quote | 指定字符串分隔符,如" 或 ' |
na.strings | 指定缺损值。默认为NA |
fill | 文件中是否忽略了行尾字段。如果有,必须指定为 TRUE |
strip.white | 是否去除字符串字段首尾的空白 |
blank.lines.skip | 是否忽略空白行,默认为TRUE。如果要指定为FALSE,需要同时指定 fill = TRUE 才有效 |
colClasses | 指定每个列的数据类型 |
comment.char | 注释符。默认使用#作为注释符号,如果文件中没有注释,指定comment.char = "" 会比较安全 (也可能让速度比较快) |
3.3 导入Excel数据
读取一个Excel文件的最好方式,就是在Excel中将其导出为一个逗号分隔文件(csv),并使用前文描述的方式将其导入R中。在Windows系统中,你也可以使用RODBC包来访问Excel文件。电子表格的第一行应当包含变量/列的名称,,所以要先下载并安装RODBC包。
library(xlsx)
work<-"d:/file.xlsx")
myframe<-read.csv(work,1) ##读取第一个工作表 read.xlsx出错
3.4 导入XML数据
以XML格式编码的数据正在逐渐增多。R中有若干用于处理XML文件的包。例如,由DuncanTemple Lang编写的XML包允许用户读取、写入和操作XML文件。XML格式本身已经超出了本书的范围。对使用R存取XML文档感兴趣的读者可以参阅www.omegahat.org/RSXML,从中可以找到若干份优秀的软件包文档。
3.5 导入SPSS数据
SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc包中的spss.get()函数。函数spss.get()是对read. spss()的一个封装,它可以为你自动设置后者的许多参数,让整个转换过程更加简单一致,最后得到数据分析人员所期望的结果。首先,下载并安装Hmisc包(foreign包已被默认安装)
install.packages("Hmisc")
library(Hmisc)
myframe<-spss.get("my.sav",use.value.labels=TRUE/FALSE)
##,use.value.labels=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子,myframe是导入后的R数据框
3.6 读取网页表格
如果是想抓去网页上的某个表格,那么可以使用XML包中的readHTMLTable()函数。例如我们想获得google统计的访问最多的1000名网站数据,则可以象下面这样做。关于这个函数可以参考这篇博文。
url <- 'http://www.google.com/adplanner/static/top1000/'
data <- readHTMLTable(url)
names(data)
head(data[[2]])
3.7 与数据库连接取数
library(RMySQL)
connectMySQL<-function(mysql,dbname,user,password,host){
drv<-dbDriver(mysql)
return(dbConnect(drv,dbname,user,password,host))
}
connect <- function()
{
con <- connectMySQL(mysql = "MySQL", dbname = "test", user = "***", password = "A", host = "10.***")
return(con)
}
con=connect()
news=dbGetQuery(con,"select news_content from news_cms where substr(news_time,1,10)='2018-08-20';")
查看数据集DA:
#注意要改为符号 /
DA<-read.csv("C:/Users/Administrator/Desktop/西瓜.csv",fill=TRUE,header=TRUE)
head(DA) # 前6行
head(DA,n=5) # 前5行
DA # 查看全部
DA[1] 或 [['列名']] #查看列
DA[1,] #查看行
DA[1:3,] # 前3行
tail(DA) # 后6行
想要了解输出,请听下回讲解 《(*^▽^*)》