说明:

1.本笔记对《R语言实战》一书有选择性的进行记录,仅用于个人的查漏补缺

2.将完全掌握的以及无实战需求的知识点略去

3.代码直接在Rsudio中运行学习



R语言实战(第二版)

part 1 入门


----------第1章 R语言介绍--------------------

help.start() #帮助文档首页
demo() #R语言demo演示
demo(package = .packages(all.available = TRUE))
demo(image) #演示图像
example("mean") #函数mean使用示例 library(ggplot2);library(pheatmap)
example("ggplot") #演示R包
example("pheatmap") #par(ask=F) vignette() #文档
vignette("dplyr")
options() #显示或设置当前选项
options(digits = 2)
help("option") #/help(options) q() -> y #退出保存.Rhistory和.RData
dir.create("./test") #创建新目录
getwd()
ls() #列出对象
rm(list = ls()) #清空对象 save.image("./test.RData") #保存工作空间
load("./test.RData") #读取工作空间 source("./test.R") #执行脚本
pdf("test.pdf")
png("test.png")
dev.off() library() #显示库中的包
.libPaths() #库路径
search() #显示哪些包已加载
help(package="ggplot2")
update.packages() #R CMD BATCH <options> test.R test.Rout #Linux终端批处理
#<R/path/R.exe> CMD BATCH --vanilla --slave "test.R" #window 批处理 help(mtcars) #示例数据帮助
lmfit <- lm(mpg~wt, mtcars)
summary(lmfit)
plot(lmfit)
cook <- cooks.distance(lmfit)
plot(cook)
predict(lmfit,newdata)

----------第2章 创建数据集------------

#行列:observation-variable, record-field, example-attribute
#数值型变量,字符型变量;类别型(因子):有序,名义
#向量、矩阵、数组、数据框、因子、列表
matrix(1:20,nrow = 4,ncol = 5,byrow = F,dimnames = list(c("A","B","C","D"),c("math","eng","chinese","music","art")))
array(1:24,c(2,3,4),dimnames = list(c("A","B"),c("a","b","c"),c("test1","test2","test3","test4"))) #2行3列4维
#数据框选择列
mtcars[1:2]
mtcars[c("mpg","cyl")]
mtcars$mpg #环境中有同名对象时不适用
attach(mtcars)
plot(mpg,wt)
detach(mtcars) #赋值仅在with函数中有效
with(mtcars,{
stats <- summary(mpg)
out <<- summary(mpg) #使用特殊赋值符<<-可在括号外使用,写入全局变量,慎用
})
stats
out #字符型向量因子水平默认以字母顺序创建,可用levels参数指定顺序
factor(c("poor","improved","excellent"),order=T)
factor(c("poor","improved","excellent"),order=T,levels = c("poor","improved","excellent"))
#数值型向量可编码为因子
factor(c(1,2),levels = c(1,2),labels = c("male","female")) #列表元素
list[[2]]
list[["ages"]]
list$ages #从键盘输入数据
data <- data.frame(age=numeric(0),gender=numeric(0),weight=numeric(0)) #创建空的数据框
data <- edit(data) #手动输入
data
newdata <- fix(data) #直接修改数据, 原data数据也将改变
newdata
data
newdata2 <- edit(data) #编辑并另存为数据,原data数据不会变
newdata2
data read.table(colClasses = c("character"),row.names = "geneID",stringsAsFactors = F)
#如读入以0开头的文本时保留0,如股票0010; 如若不以第一行为行名,指定某行; 默认转换字符变量为因子,设为F,可提升读取速度。
xlsx::read.xlsx("./test.xlsx",1) #1表工作表序号 #数据对象函数
length()
dim/str/class/mode
names()
cbind/rbind
head/tail

----------第3章 图形初阶--------------------

dev.new() #画图前新建一个图形窗口
plot(mtcars$mpg,mtcars$cyl)
dev.off() #关闭图形窗口,与pdf等连用 par(no.readonly = T,lty=2,pch=7) #设置图形参数 pch #点符号0-25
cex #符号大小
lty #线条类型1,2,3,4,5,6
lwd #线条宽度
col #默认的绘图颜色
col.axis #坐标轴刻度文字颜色
col.lab #坐标轴名称颜色
col.main #标题颜色
col.sub #副标题颜色
fg #图形前景色
bg #图形背景色
cex.axis #坐标轴刻度文字缩放倍数
cex.lab #坐标轴名称缩放倍数
cex.main #标题缩放倍数
cex.sub #副标题缩放倍数
font #字体样式,1常规,2粗体,3斜体,4粗斜体,5符号字体
font.axis
font.lab
font.main
font.sub
ps #字体磅值
family #字体族,serif衬线,sans无衬线,mono等宽
pin #图形尺寸(宽高),英寸
mai #边界大小,下左上右,英寸
mar #边界大小,下左上右,英分 #表示颜色的方法:
col=1 #颜色下标
col="white" #名称
col="#FFFFFF" #十六进制
col=rgb(1,1,1) #RGB值(基于红绿蓝三色生成)
col=hsv(0,0,1) #HSV值(基于色相-饱和度-亮度生成) colors() #查看所有颜色 library(RColorBrewer)
n <- 7
mycolors <- brewer.pal(n,"Set1") #Set1调色板中选取n种
barplot(rep(1,n),col = mycolors) brewer.pal.info #调色板列表
display.brewer.all() #调色板展示 mycolors2 <- rainbow(n) #彩虹色
pie(rep(1,n),labels = mycolors2,col = mycolors2) mygrays <- gray(0:n/n) #n阶灰度色
pie(rep(1,n),labels = mygrays,col = mygrays) names(pdfFonts()) #系统中可用字体 abline(v=seq(1,10,2),lty=2,col="blue") #添加参考线
legend() #添加图例
text() #绘图区内部添加文本,通常用于标示图形中的点
mtext() #图形边界之一添加文本
plotmath() #添加数学符号
demo(plotmath) #图形组合排布
par(mfrow=c(2,2)) #按行
par(mcol=c(1,3)) #按列
layout()

------------------第4章 基本数据管理------------

data <- data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
transform(data,sumx=x1+x2,meanx=(x1+x2)/2) x%%y #求余
4%%3
x%/%y #取整
5%/%2 is.na() #NA
is.infinite() #Inf,-Inf
is.nan() #NaN #多数数值函数中含有na.rm=T参数
sum(x,na.rm = T)
na.omit() Sys.Date()
date()
as.Date("2019-3-5")
as.Date("02/17/2019","%m/%d/%Y")
difftime(Sys.Date(),"2019-3-1",units = "days") is.numeric()/is.character()/is.vector()/is.matrix()/is.data.frame()/is.factor()/is.logical() #判断,与if-then联合使用
as.numeric()/as.character()/as.vector()/as.matrix()/as.data.frame()/as.factor()/as.logical() #转换 #排序函数
#order 返回排序后的索引
mtcars[order(mtcars$mpg,-mtcars$cyl),]
#sort 直接排序,返回排序后结果
sort(mtcars$mpg,decreasing = T)
#rank 返回排名(相同排名会出现小数)
rank(mtcars$mpg) #合并函数
merge(df1,df2,by=c("ID","Country"))
cbind(df1,df2,df3) #必须相同行数,以同顺序排序
rbind(df1,df2)
dplyr::left_join(df1,df2,by="ID") #right_join/full_join mtcars[,c(2:4)] #选列
mtcars[,c(-2,-5)] #剔除列
mtcars$hp <- mtcars$wt <- NULL #剔除两列,NULL未定义(不同于NA)
mtcars[!(names(mtcars) %in% c("hp","wt"))] #是否包含所选列名 mtcars[1:3,] #选行
mtcars[mtcars$mpg>20 & mtcars$vs=="0",] #取子集
subset(mtcars,mpg>20 | hp<90,select = mpg:hp) #选行又选列 #随机抽样
mtcars[sample(1:nrow(mtcars),3,replace=F),]

--------------第5章:高级数据管理--------------

#1.数学函数
abs(-1)
sqrt(25)
ceiling(3.2) #不小于某值的最小整数
floor(3.2) #不大于某值的最大整数
trunc(3.2) #截取整数
round(3.456,digits = 2) #保留2位小数(四舍五入)
signif(3.456,digits=2) #保留2位有效数字(四舍五入)
cos(x)/sin(x)/tan(x)
acos(x)/asin(x)/atan(x)
log(4,base = 2)
log(10) #取自然对数,而非ln(4)
log10(10) #常用对数
exp(2) #指数,即e^2 #总结R语言中取整运算主要包括以下五种:floor()向下取整,ceiling()向上取整,round()四舍五入取整,turnc()向0取整,signif()保留给定位数的精度
#以上函数可直接用在数值向量、矩阵或数据框中 #2.统计函数
x <- c(1,1.2,4,3,6,9,3,23,0.001,10)
mean(x)
mean(x,trim = 0.05,na.rm = T) #去掉最大和最小的5%数据以及缺失值后的均值
median(x)
sd(x) #标准差
var(x)
mad(x) #绝对中位差:统计离差,是一种鲁棒统计量,MAD=median(∣Xi-median(X)∣)
quantile(x) #求分位数
quantile(x,1/4) #25%分位数
quantile(x,0.9) #90%分位数
range(x) #值范围
sum(x)
diff(x) #滞后差分,默认滞后1位,即后一位数减前一位数
diff(x,lag = 2)
min(x)
max(x)
scale(x) #按列进行中心化或标准化
scale(x,center = T,scale = T) #默认。center中心化,center和scale标准化
scale(dataframe) #同样对矩阵或数据框的列进行均值为0,标准差位1的标准化,相当于Z score
scale(dataframe)*sd+m #进行任意均值m和标准差sd的归一化
transform(dataframe,var=scale(var)) #仅对矩阵/数据框的指定列进行归一化 #3.概率函数
#d=密度函数density
#p=分布函数
#q=分位数函数quantile
#r=随机数生成函数random #eg:正态分布norm
dnorm(x)
pnorm(1.96) #曲线下方面积
qnorm(0.9,mean = 100,sd=200) #0.9分位点值
rnorm(50,mean = 50,sd=10) #生成50个正态随机数 a <- pretty(c(-5,5),30) #pretty(x, n)创建美观的分割点,将一个连续型变量x分割为n个区间,绘图中常用。
b <- dnorm(a)
plot(a,b,type = "l") #其他概率分布:
beta/binom/chisq/exp/f/gamma/geom/hyper/logis/multinom/nbinom/pois/signrank/t/unif/weibull/wilcox....... runif(5) #生成(0,1]上服从均匀分布的伪随机数
runif(5) #随机数每次都不同 set.seed(123) #设定种子,使下次结果重现。数字可随意设定,复现时指定相同即可。
runif(5)
set.seed(123)
runif(5) #复现结果,需与set.seed连用 #4.字符处理函数
x <- "adb234FGdef"
nchar(x) #字符长度,length(x)是元素的个数
length(x) substr(x,2,4) #提取子串
grep("FG",x) #返回匹配下标
sub("FG","yx",x)
sub("\\s",".","hello world") #R语言转义\\
sub("\\.","_","hello.world") #"."需要中括起来或加转义\\,不然默认为一个字符
grepl()
gsub() strsplit(x,"")
unlist(strsplit(x,"234"))[2]
sapply(strsplit(x,"234"), "[",2) # "["表提取某个对象一部分,即提取第2个元素 paste(x,1:3,sep = "_")
paste0(x,1:3) toupper(x) #大写转换
tolower(x) #小写转换 #其他函数
seq(1,10,2)
rep(1:7,3)
cut(c(1:20),breaks=4) #将连续变量切割n个区间(水平因子)
table(cut(c(1:20),breaks=4,labels = c("a","b","c","d")))
pretty(c(1:20),4) #创建美观分割点(n个),常用绘图 apply(mtcars, 2, sum)
mydata <- matrix(rnorm(30),nrow = 6)
apply(mydata, 1, mean)
apply(mydata, 2, mean, trim=0.2) #可直接加函数参数
fix(mydata) #加个NA试试
apply(mydata, 2, mean, na.rm=T) lapply() #返回列表
sapply() #返回向量 #按条件创建新变量
mtcars$new[mtcars$mpg >20 & mtcars$vs=="0"] <- "yes"
mtcars$new[mtcars$mpg <=20 & mtcars$vs=="1"] <- "no"
head(mtcars) #控制流
#基本概念:语句{statement},条件cond(T or F),表达式expr,序列seq
#1.循环
for(i in 1:10) print("hello")
i=10;while (i>0) {print("hello");i=i-1} #确保while中条件可变 #2.条件
#if-else结构
grade <- "10"
if(!is.factor(grade)) grade <- as.factor(grade) else print("grade already is factor") #ifelse结构(紧凑)
ifelse(as.numeric(grade)>9,"passed","failed") #switch结构 (选择)
for (i in c("sad","happy"))
print(
switch(i,
happy="yes",
sad="no",
angry="nono"
)
) #3.自编函数
#描述统计量计算函数
mystats <- function(x,parametric=T,print=F){
if(parametric){
center <- mean(x);spread <- sd(x) #参数统计量
}else{
center <- median(x);spread <- mad(x) #非参统计量
}
if(print & parametric){
cat("mean=",center,"\n","sd=",spread,"\n")
}else if(print & !parametric){
cat("median=",center,"\n","mad=",spread,"\n")
}
result <- list(center=center,spread=spread)
return(result)
} ##验证以上函数
set.seed(123)
x <- rnorm(100)
mystats(x)
mystats(x,parametric = F)
mystats(x,parametric = F,print = T)
mystats(x,parametric = T,print = T) #switch自编函数
mydate <- function(type="long"){
switch(type,
long=format(Sys.time(),"%A %B %d %Y"),
short=format(Sys.time(), "%m-%d-%y"),
cat(type, "is note a recognized type\n")
#cat捕获用户输入错误,也可用warning(提示错误),message(诊断信息),stop(停止执行)等函数
)
} ##验证以上函数
mydate()
mydate("long") #默认
mydate("short")
mydate("x") #整合(aggregate)和重塑(reshape)
t(mtcars)
head(mtcars)
aggregate(mtcars, by=list(mtcars$cyl,mtcars$gear), FUN = mean, na.rm=T) library(reshape2)
md <- melt(mtcars,id=c("mpg","cyl")) #融合,宽数据变长数据
#提取id列,其他列全部融合
md2 <- dcast(md,mpg+cyl~variable) #重塑,长数据变宽数据
head(md2)
dcast(md,mpg+variable~cyl)
dcast(md,cyl+variable~mpg)
#使用mpg对cyl和variable分组
#公式的左边每个变量都会作为结果中的一列,而右边的变量被当成因子类型,每个水平都会在结果中产生一列。 dcast(md,mpg~variable,mean)
dcast(md,cyl~variable,mean)
dcast(md,mpg~cyl,mean) #dcast-输出时返回一个数据框。acast-输出时返回一个向量/矩阵/数组

R语言实战(第二版)-part 1笔记的更多相关文章

  1. R 语言实战-Part 4 笔记

    R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...

  2. R 语言实战-Part 3 笔记

    R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...

  3. R语言实战-Part 2笔记

    R 语言实战(第二版) part 2 基本方法 -------------第6章 基本图形------------------ #1.条形图 #一般是类别型(离散)变量 library(vcd) he ...

  4. R 语言实战-Part 5-1笔记

    R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ...

  5. R 语言实战-Part 5-2笔记

    R 语言实战(第二版) part 5-2 技能拓展 ----------第21章创建包-------------------------- #包是一套函数.文档和数据的合集,以一种标准的格式保存 #1 ...

  6. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  7. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  8. 《R语言实战》读书笔记--为什么要学

    本人最近在某咨询公司实习,涉及到了一些数据分析的工作,用的是R语言来处理数据.但是在应用的过程中,发现用R很不熟练,所以再打算学一遍R.曾经花一个月的时间看过一遍<R语言编程艺术>,还用R ...

  9. R语言实战(第2版)PDF完整版带书签目录

    <R语言实战2>PDF+源代码 下载:https://pan.baidu.com/s/1gP_16Xq9eVmLJ1yOsWD9FA 提取码:l8dx 分享更多python数据分析相关电子 ...

随机推荐

  1. JuiceFS 如何帮助趣头条超大规模 HDFS 降负载

    作者简介 王振华,趣头条大数据总监,趣头条大数据负责人. 王海胜,趣头条大数据工程师,10 年互联网工作经验,曾在 eBay.唯品会等公司从事大数据开发相关工作,有丰富的大数据落地经验. 高昌健,Ju ...

  2. AFO记

    希望永远也不要动笔写这个. 发以自勉

  3. PriorityQueue(优先队列)

    PriorityQueue 翻译过来就是优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆顶为最小值. PriorityQueue 一个基于优先级的无界优先级队列. ...

  4. DH密钥交换

    DH密钥交换 密模运算 所谓幂模,就是先做一次幂运算,再做一次模运算. 模运算有以下性质: 也就是说,先模再乘和先乘再模,只要最后都模了同一个模数,结果都是一样. 有了这个性质,我们首先得到幂模运算的 ...

  5. PyPi到底是什么?pypi有啥作用?PyPi和pip有何渊源?

    转载:https://blog.csdn.net/weixin_42139375/article/details/82711201 可能有很多刚入行不久的朋友们,每天都在用pip 命令install ...

  6. 滑动窗口的最大值 牛客网 剑指Offer

    滑动窗口的最大值 牛客网 剑指Offer 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6 ...

  7. js和jq文档操作

    JS文档操作 一.dom树结构 1.元素节点 2.文本节点 3.属性节点      不属于元素节点的子节点  4.文档节点(document) 二.处理元素节点    method    1.docu ...

  8. 【Go语言学习笔记】函数做参数和闭包

    函数做参数 在Go语言中,函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型.类似于重写(同名覆盖). 回调函数:函数有一个参数是函数类型,这个 ...

  9. Linux下软链接与硬链接的区别

    由于下面会说到inode,所以如果没有了解过,请务必搞懂inode的真正含义,厚颜无耻的推荐我的一篇博客:Linux磁盘与文件系统管理 如果我们在系统中新建一个文件,我们看到的文件名实际上只是表面现象 ...

  10. MySQL新建用户并赋予权限:解决命令行与Navicat展示数据库不一致问题

    1.创建新用户 'xiaoxiao'密码'123456' mysql> CREATE USER 'xiaoxiao'@'localhost' IDENTIFIED BY '123456'; 2. ...