R基础

2022-08-25  本文已影响0人  重拾生活信心

R 语言教程 | 菜鸟教程 (runoob.com)

R的获取和安装

R可以在CRAN([Comprehensive R Archive Network,http://cran.r-project.org)上免费下载。
Linux、Mac OS X和Windows都有相应编译好的二进制版本。根据你所选择平台的安装说明进行安装即可。包(package)的可选模块(同样可从CRAN下载)来增强R的功能。

R语言介绍

Rstudio快捷键

R的使用

R中帮助函数 用于管理R中工作空间的函数

Package

包的使用

install.packages()
install.packages("包名")
update.packages()更新已经安装的包。
installed.packages()查看已安装包。

要在R会话中使用它,还需要使用library()命令载入这个包

detach("package : pakckage_name"):从工作空间移除
remove.package("pakckage_name"):从硬盘上彻底删除

help(package="package_name"
可以输出某个包的简短描述以及包中的函数名称和数据集名称的列表。使用函数help()可以查看其中任意函数或数据集的更多细节。

Rpack<- installed.packages()[,1]
save(Rpack,file = "Rpack.Rdata")

load("./Rpack.Rdata")
for ( i in Rpack ) install.packages(i)
常见错误

创建数据集

一些代码:R基础练习 - 简书 (jianshu.com)

不同的行业对于数据集的行和列叫法不同。统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据挖掘和机器学习学科的研究者则把它们叫作示例(example)和属性(attribute)。
本书中通篇使用术语观测和变量

数据结构
数据结构
向量

向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量.

矩阵

矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵。

数组

数组(array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建

数据框

由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框可通过函数data.frame()创建

列表

某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数list()创建列表:

变量

变量可归结为名义型、有序型或连续型变量。

类别(名义型)变量有序类别(有序型)变量在R中称为因子(factor)

##向量
a <- c(1, 2, 5, 3, 6, -2, 4) 
b <- c("one", "two", "three") 
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
##矩阵
mymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns, 
 byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))
##其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。
#选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),
#默认情况下按列填充。
#可以使用下标和方括号来选择矩阵中的行、列或元素。X[i,]指矩阵X中的第i行,X[,j]指第j列,X[i, j]指第i行第j 个元素。选择多行或多列时,下标i和j可为数值型向量

##数组
myarray <- array(vector, dimensions, dimnames)
# 其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。
##数据框
mydata <- data.frame(col1, col2, col3,...) 
#其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)

##列表
mylist <- list(name1=object1, name2=object2, ...)
#以通过在双重方括号中指明代表某个成分的数字或名称来访问列表中的元素。

函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上.

> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> diabetes <- factor(diabetes)
> status <- factor(status, order=TRUE)
> patientdata <- data.frame(patientID, age, diabetes, status)


> str(patientdata)
‘data.frame’: 4 obs. of 4 variables:
$ patientID: num 1 2 3 4
$ age : num 25 34 28 52
$ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3


> summary(patientdata)
patientID age diabetes status
Min. :1.00 Min. :25.00 Type1:3 Excellent:1
1st Qu.:1.75 1st Qu.:27.25 Type2:1 Improved :1
Median :2.50 Median :31.00 Poor :2
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
数据输入
数据输入.png
用键盘输入
mydata <- data.frame(age=numeric(0),
gender=character(0), weight=numeric(0))
mydata <- edit(mydata)
#输入变量名和数据
#mydata <- edit(mydata)与fix(mydata)等价,能够编辑已经输入的数据并添加新的数据

read.table()函数被用于处理字符串并返回数据框

mydatatxt <- "
age gender weight
25 m 166
30 f 115
18 f 120
"
mydata <- read.table(header=TRUE, text=mydatatxt)
# mydata
  age gender weight
1  25      m    166
2  30      f    115
3  18      f    120
从带分隔符的文本文件导入数据(.CSV)
mydataframe <- read.table(file, options)
# file是一个带分隔符的ASCII文本文件,options是控制如何处理数据的选项
read.table()
导入Excel 数据

xlsx包

……
处理对象的实用函数.png
处理对象的实用函数.png 运算符
逻辑运算符
数学函数
数学函数
统计函数
概率分布
字符处理函数
其他实用函数
矩阵运算
矩阵运算
图形

par(optionname=value, optionname=name,...)。

pch、lyt
color
文字 文字 图形边界 axis()
legend()
文本标注
title(main="My Title", col.main="red", 
 sub="My Subtitle", col.sub="blue", 
 xlab="My X label", ylab="My Y label", 
 col.lab="green", cex.lab=0.75)

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)

#为图形添加参考线
abline(h=yvalues, v=xvalues)
abline(v=seq(1, 10, 2), lty=2, col="blue")

#图例
legend(location, title, legend, ...)

#文本标注
text(location, "text to place", pos, ...) 
mtext("text to place", side, line=n, ...)

#数学标注
help(plotmath)

#图形组合
#可以在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。另外,可以使用mfcol=c(nrows, ncols)按列填充矩阵。
par(mfrow=c(2,2))
数据处理
类型转换
类型转换函数
数据排序

order()默认升序,在排序变量前加“-”,则降序。

数据集的合并

merge()横向合并(依赖共有变量如ID)(添加列/变量)
rbind()纵向合并(依赖共同变量,顺序不必相同(删除多余变量或者改为NA))(添加行,观测)

选取子集

选入、剔除 :变量名\第几个向量[条件]\
subset()
sample()随机抽样 replace=False,无放回;replace=True 有放回

数学函数
数学函数
统计函数
概率函数

通过函数set.seed()显式指定这个种子,让结果可以重现(reproducible)。


字符处理函数
其他实用函数

其中,x为数据对象,MARGIN是维度的下标,FUN是由你指定的函数,而...则包括了任何想传递给FUN的参数。在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列。
sapply(x, FUN, options)
其中的x是你的数据框(或矩阵),FUN为一个任意的函数。如果指定了options,它们将被传递
给FUN。

控制流
控制流
  1. for结构
    for循环重复地执行一个语句,直到某个变量的值不再包含在序列seq中为止。
    for (var in seq) statement
  2. while结构
    while循环重复地执行一个语句,直到条件不为真为止。
    while (cond) statement

switch(expr, ...)
其中的...表示与expr的各种可能输出值绑定的语句。

swich()
自编函数
自编函数

在函数声明中为参数指定的值将作为其默认值。
函数cat()仅会在输入的日期格式类型不匹配"long"或"short"时执行。


e.g.

可以使用函数warning()来生成一条错误提示信息,用message()来生成一条诊断信息,或用stop()停止当前表达式的执行并提示错误

整合与重构
reshape2 包
融合重塑
描述性统计分析
分组计算描述性统计量
image.png
image.png
image.png image.png
列联表
上一篇 下一篇

猜你喜欢

热点阅读