R语言从零到进阶学习笔记(带注释)

#-------------------------------------------#
Chapter 06 举个例子
#-------------------------------------------#

getwd() #获得当下路径
setwd('/Users/marscolono/Downloads/RData') #设定路径
df <- read.table("ToothGrowth.csv",sep = ",",header = T) #读取table
table(df$supp,df$dose) #统计频率,用$索引
#   0.5  1  2
#OJ  10 10 10
#VC  10 10 10

aggregate(df$len, by=list(df$supp,df$dose), FUN=mean) #整合数据,将len这一列用mean统计
# Group.1 Group.2     x
#1      OJ     0.5 13.23
#2      VC     0.5  7.98
#3      OJ     1.0 22.70
#4      VC     1.0 16.77
#5      OJ     2.0 26.06
#6      VC     2.0 26.14
aggregate(df$len, by=list(df$supp,df$dose), FUN=sd)#整合数据,将len这一列用方差统计
class(df$dose) #查看类别
df$dose <- factor(df$dose)
fit <- aov(len~ supp*dose,data=ToothGrowth)
summary(fit)

install.packages("HH")
library(HH)
interaction.plot(df$dose, df$supp, df$len, type="b", 
                 col=c("red","blue"), pch=c(16, 18),
                 main = "Interaction between Dose and Supplement Type")

#-----------------------------------------------------#
Chapter 10
#-----------------------------------------------------#

getwd()
setwd('/Users/marscolono/Downloads/RData')
list.files() #列出该目录下所有文件
dir() #列出该目录下所有文件
1+2
x<-3
x
x=3
5 ->x
x <<- 5
y <- sum(1,2,3,4,5) #统计和
z <- mean(1,2,3,4,5) #统计平均
print(x)
ls()
ls.str()
str()
ls(all.names = TRUE)
rm(x)
x
rm(y,z)
rm (list=ls())
history()
history(25)
# system() LINUX
save.image()
q()

#---------------------------------------------#

Chapter 11

#--------------------------------------------#

?install.packages
install.packages(vcd)
install.packages("vcd")
.libPaths()
library()
install.packages(c("AER","ca"))
update.packages()

#------------------------------------------#

Chapter 12

#------------------------------------------#

.libPaths()
#"/Library/Frameworks/R.framework/Versions/4.0/Resources/library"
library()
require(vcd)
library (vcd)
search()
help( package="vcd" )
ls("package:vcd")
data(package="vcd")
detach("package:vcd")
#remove.packages("vcd")

#从一个电脑向另一个电脑迁移R包
#remove R packages 
Rpack <- installed.packages()[,1]
save(Rpack,file = "Rpack.Rdata")
load("C:/Users/wangtong/Desktop/RData/Rpack.RData")
for (i in Rpack)  install.packages(i)

#-----------------------------------------#

Chapter 13

#-----------------------------------------#

help.start() #查看帮助文件
help(sum) #查看sum函数
args(plot)
example(mean) #函数举例
example("hist") #举例柱状图
example("example") ##举例各种图
demo(graphics) #画图demo
help(package=ggplot2) #ggplot2的说明书
vignette()
vignette("xts")
??qplot
help.search(heatmap)
help.search("heatmap")
??heatmap 
apropos("sum") #搜索所有带有sum的东西
apropos ("sum",mod = "function") #搜索带有sum的函数
RSiteSearch("matlab") #会打开网页搜索

#--------------------------------------------#

Chapter 15

#--------------------------------------------#

help(package="datasets")
sunspot.year
data() #R里面所有datasets
rivers
rivers <- c(1,2,3)
help("mtcars") #查看数据库mtcars介绍
data(package = "MASS")
data(package = "car")
data(package = .packages(all.available = TRUE)) # 显示R里面所有可用数据集
data(Chile,package = "car") # 将car数据集指定为Chile
Chile

#--------------------------------------------#

Chapter 17

#--------------------------------------------#

euro
rivers
stat.abb
state.name
state.area
x <- c(1,2,3,4,5)
x
print(x)
y <- c("one","two","three")
z <- c(TRUE,FALSE,T,F)
c(1:100) #输出从1~100的数
seq(1,100)
seq(1,100,by=2) #等差
seq(1,100,length.out = 10) #等差10
rep(2,5) #重复序列 #2 2 2 2 2
rep(x,10) 
rep(x,each=5,times=2)
a <- c(1,2,"one") #数值转换字符串,向量里元素类型一致
mode(a) #查看类型
typeof(a) #查看类型
mode(z) #查看类型
a=2
b=3
c="hello,world"
d=TURE
x=c(1,2,3,4,5)
y=6:10
x*2+y
x[x>3]
rep(x,c(2,4,6,1,3))

#---------------------------------------------#

Chapter 18

#---------------------------------------------#

x <- c(1:100)
length(x)
# vector numberic index
x[1] #元素从1开始
x[0]
x[-19]#出了这个元素,输出所有元素
x[4:18]#4~18个元素
x[c(1,23,45,67,89)]
x[c(11,11,23,234,5,90,2)] #可以多次访问同一个元素
x[c(-2,3,4)] #报错
# vector logic index
y <- c(1:10)
y[c(T,F,T,T,F,F,T,T,T,F,T)] #true输出,false不输出,第11个不输出
y[c(T)]#所有都输出
y[c(T,F)]#间隔输出 #1 3 5 7 9
y[c(T,F,T)] #间隔输出 #1  3  4  6  7  9 10
y[y>5] #输出y>5的元素
y[y>5 & y<9] #条件限制 #6 7 8

#charactor vector
z <- c("one","two","three","four","five")
one %in% z #看one是否在z中
'one' %in% z
z[z %in% c("one","two")]

# vector name index
y
#1  2  3  4  5  6  7  8  9 10
names(y) <- c("one","two","three","four","five","six","seven","eight","nine","ten")
#one   two three  four  five   six seven eight  nine   ten 
#1     2     3     4     5     6     7     8     9    10 
euro
#ATS  BEF DEM ESP FIM FRF IEP 
#13.760300 40.339900 1.955830 166.386000 5.945730 6.559570 0.787564 
#ITL         LUF         NLG         PTE 
#1936.270000   40.339900    2.203710  200.482000 

names(euro) #提取euro的名字
#"ATS" "BEF" "DEM" "ESP" "FIM" "FRF" "IEP" "ITL" "LUF" "NLG" "PTE"

#change vector value
x <- 1:100
x[101] <- 101 #增加一个元素
v <- c(1,2,3)
v[c(4,5,6)]<-c(4,5,6) #增加多个元素
v[20]=4 #中间为空值 #1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4
rm(v) #删除向量v


append(v,99,after = 5) #返回在5后面增加99,但是没有改变v的数据
y[-c(1:3)] #删除前三个元素
y <- y[-c(1:3)] #修改,删除前三个元素
v[2]=15 #修改向量

#----------------------------------------------#

Chapter 19 向量运算

#----------------------------------------------#

x <- 1:10
x+1
x-3
x <- x+1
y <- seq(1,100,length.out = 10)
x+y
x*y
x**y
y%%x #球余数
y%/%x #整除
z <- c(1,2)
x+z
x*z #循环加(1,2)
z <- 1:3
x+z #报错,一个向量必须是另一个向量的整数倍数
x>5 #返回bool型 #FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
x>y #TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
c(1,2,3) %in% c(1,2,2,4,5,6) #包含运算符 # TRUE  TRUE FALSE #左方是否在右方中
x==y #判断对应是否相等
x=y #一个=是赋值操作
x <- 1:10
y <- seq(1,100,length.out = 10)
x==y #判断对应是否相等

#vector functions
x <- -5:5
abs(x) #绝对值
sqrt(x) #平方
log(16,base = 2) #log2(16)
log10(10) 
exp(x) #指数
#取整
ceiling (c(-2.3,3.1415)) #返回不小于x(-2.3,3.1415)两个值的最小整数
floor(c(-2.3,3.1415)) #返回不大于x(-2.3,3.1415)两个的最小整数
trunc(c(-2.3,3.1415)) ##返回x(-2.3,3.1415)两个的整数部分
round (c(-0.618,3.1415),digits=2) #四舍五入,保留2位

signif (c(-0.0618,3.1415),digits=3) # 保留有效数字3位
sin(x);cos(x);tan(x)

vec <- 1:100
sum(vec) #求和
max(vec) #返回最大值
min(vec) #返回最小值
range(vec) #返回最大值和最小值
mean(vec) #均值
var(vec) #方差
round (var(vec),digits=2) #保留的两位小数
sd(vec)    #标准差
prod(vec) #连乘的积
median(vec) #中位数
quantile(vec) #分中位数
quantile (vec,c(0.4,0.5,0.8))#4分中位数#5分中位数#8分中位数

#get index
t <- c (1,2,2,5,7,9,6)
which.max (t)  #最大值的位置 索引
which.min(t) #最小值的位置
which(t==7) #所在位置的索引
which(t>5)
t[which (t>5)]

#----------------------------------------------#

Chapter 20 矩阵和数组

#------------------------------------------------#

iris3
state.x77
heatmap(state.x77) #输入矩阵可以绘制热图
#Creating Matrices
x <- 1:20
m <- matrix(x,nrow = 4,ncol = 5) #创建矩阵
m <- matrix(1:20,4,5)
matrix(x,nrow=4,ncol=6)
matrix(x,4,4)
matrix(x,3,3)
m <- matrix(x,nrow = 4,ncol = 5,byrow = TRUE) #按行排列
m <- matrix(x,nrow = 4,ncol = 5,byrow = F) 
rnames <- c("R1","R2","R3","R4")
cnames <- c("C1","C2","C3","C4","C5")
dimnames(m)=list (rnames,cnames) #创建一个带有名字的矩阵

#C1 C2 C3 C4 C5
#R1  1  2  3  4  5
#R2  6  7  8  9 10
#R3 11 12 13 14 15
#R4 16 17 18 19 20

dim(x) #返回向量的维数
dim(x) <- c(4,5)
x
#Creating an array
x <- 1:20
dim(x) <- c(2,2,5) #三维数组

# dim names
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2,3,4), dimnames=list(dim1, dim2, dim3))
z #cool
Titanic # 4 2 2 2

#Using matrix subscripts #访问数据
m <- matrix(x,nrow = 4,ncol = 5)
m[1,2] #第一行,第2列
m[1,c(2,3,4)] #一次访问多个元素
m[c(2,4),c(2,3)] 
m[2,] #访问第二行
m[,2] #访问第二列
m[2] #访问对应的数字
m[-1,2] #去除第一行访问第二列的其他数

#Using matrix names
rnames <- c("R1","R2","R3","R4")
cnames <- c("C1","C2","C3","C4","C5")
dimnames(m)=list (rnames,cnames) #创建一个带有名字的矩阵

m["R1","C2"] #通过行和列名字索引

state.x77[,"Income"] #整列
state.x77["Alabama",] #整行

#Matrix peration
m+1
m*2
m+m
n <- matrix(1:20,5,4)
m+n #需要行和列一致
#在原有函数加上col和row
colSums(m) #计算行的和
rowSums(m)
colMeans(m)
rowMeans(m)
#乘法
n <- matrix (1:9,3,3)
t <- matrix (2:10,3,3)
n*t  #对应位置相乘
n%*%t #矩阵相乘
diag(n) #n的对角阵
diag(m)
t(m) #将行和列转置

a <- matrix(rnorm(16),4,4)
solve(a)
eigen(a)
dist(a)

#--------------------------------------------#

Chapter 21 列表

#-------------------------------------------------#

state.center
a <- 1:20  #数值型
b <- matrix(1:24,4,6)  #矩阵
c=mtcars  #列表
d <- "This is a test list" # 字符串
mlist <- list(a,b,c,d) #将四个放在一个列表里
mlist <- list(first=a,second=b,third=c,fourth=d) #指定顺序

#List
mlist[1] #访问,一个子集,依然是列表
mlist[c(1,4)]
state.center[c("x","y")] #通过名字访问列表
mlist$first #访问第一个
mlist$second

state.center$x
mlist[[1]] #元素本身的数据类型
class(mlist[2])
class(mlist[[2]])

mlist[5] <- iris #提示错误
mlist[[5]] <- iris
mlist[5] <- NULL #删除列表中元素
mlist[[5]] <- NULL #删除列表中元素

#-------------------------------------------------#

Chapter 22 数据框

#-----------------------------------------------#

iris
mtcars
rock #48块石头形状的数据
#组合成数据框:
state <- data.frame(state.name,state.abb,state.region,state.x77) #组合成数据狂
state[1] #第一列
state[c(2,4)] #第二列和第四列
state[,"state.abb"] #名称索引
state["Alabama",]
women$height #美元符号索引 #去除一列
plot(women$height,women$weight) #绘制身高体重的散点图
lm(weights~height,data = women)
attach(mtcars) #加载数据框
mpg #直接输入名字就好
hp
detach(mtcars) #取消加载
with(mtcars,{mpg}) #with索引

#----------------------------------------------#

Chapter 23 因子

#--------------------------------------------#

mtcars$cyl
# 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
table(mtcars$cyl) #频数统计 
# 4  6  8 
# 11  7 14 

f <- factor(c("red","red","green","red","blue","green","blue","blue"))
#red   red   green red   blue  green blue  blue 
#Levels: blue green red

week <- factor(c("Mon","Fri","Thu","Wed","Mon","Fri","Sun"))
week <- factor(c("Mon","Fri","Thu","Wed","Mon","Fri","Sun"),order = TRUE,
               levels = c("Mon","Tue","Wed","Thu","Fri","Sat","Sun"))
# Mon Fri Thu Wed Mon Fri Sun
# Levels: Mon < Tue < Wed < Thu < Fri < Sat < Sun #有了顺序

fcyl <- factor(mtcars$cyl) #定义因子
plot(mtcars$cyl) #绘图 #----散点图
plot(fcyl) #绘图 #----条形图
num <- c(1:100)
cut (num,c(seq(0,100,10))) #分割  0  10  20  30  40  50  60  70  80  90 100
state.division #因子数据
state.region #因子数据

#----------------------------------------------#

Chapter 24 缺失数据

#---------------------------------------------#

#NA:not availabel
x <- 1:5
x[10] <- 100
x
1+NA
NA==0
a <- c(NA,1:49)
sum(a) #NA
mean(a) #NA
sum(a,na.rm = TRUE) #加上参数,移除NA
mean(a,na.rm = TRUE) #加上参数,移除NA
mean(1:49)
is.na(a) #查看是否有缺失值
install.packages("VIM")
library(VIM)
is.na(sleep)
colSums(is.na(sleep)) #计算每一列缺失值
rowSums(is.na(sleep)) #计算每一行缺失值
c <- c(NA,1:20,NA,NA)
d <- na.omit
is.na(d)
na.omit(sleep) #将包含NA的行删除掉
1/0 #Inf无穷大或者无穷小
-1/0
0/0
is.nan(0/0) #TRUE
is.infinite(1/0)

#------------------------------------------------#

Chapter 25 字符串

#----------------------------------------------#

nchar ("Hello World") #统计字符串的长度 # 11
month.name
nchar(month.name) # 每个字符串的长度:7 8 5 5 3 4 4 6 9 7 8 8
length(month.name) # 向量的个数:12
paste("Everybody","loves","stats") #将多个字符串合并成一个 #"Everybody loves stats"
paste("Everybody","loves","stats",sep='-') #"Everybody-loves-stats"
names <- c("Moe","Larry","Curly")
paste(names,"love stats") # "Moe love stats"   "Larry love stats" "Curly love stats"
substr(month.name,1,3) #提取前三个字符
#原来:"January"   "February"  "March"     "April"     "May"       "June"      "July"
#结果:"Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
Mon <- substr(month.name,1,3)
toupper(Mon) #将所有字符串变成大写
tolower(Mon) #将所有字符串变成小写

#正则表达式子
gsub("^(\\w)", "\\U\\1",tolower(Mon)) #首字母大写 #gsub全局替换 ^:首字母
gsub("^(\\w)", "\\U\\1",tolower(Mon),perl = TRUE) #首字母大写
gsub("^(\\w)", "\\L\\1",toupper(Mon),perl = TRUE) #首字母小写

x <- c("b","A+","AC")
grep ("A+",x,fixed=TRUE) #grep寻找 # 2
grep ("A+",x,fixed=FALSE) # 2  3
match("AC",x) # 3
path <- "/usr/local/bin/R"
strsplit(path,"/") #字符串分割,返回列表 # ""  "usr" "local" "bin" "R"
strsplit(c(path,path),"/")

face <- 1:13
suit <- c("spades","clubs","hearts","diamonds")
outer(suit,face,FUN=paste) #两个字符串的所有组合
outer(suit,face,FUN=paste,sep="-") #两个字符串的所有组合#用连接符号‘-’连接

#---------------------------------------------#

Chapter 26 日期和时间

#---------------------------------------------#

sunspots #每月太阳黑子数
presidents #美国总统的支持率
airquality #纽约每天空气质量
airmiles 
Sys.Date() #获取系统此刻日期
a="2017-01-01"
as.Date(a)
b=as.Date(a,format="%Y-%m-%d") #转化成日期格式
class(b)
?strftime
seq(as.Date("2017-01-01"),as.Date("2017-07-05"),by=5) #打印日期
#[1] "2017-01-01" "2017-01-06" "2017-01-11" "2017-01-16" "2017-01-21" "2017-01-26"
#[7] "2017-01-31" "2017-02-05" "2017-02-10" "2017-02-15" "2017-02-20" "2017-02-25"
#[13] "2017-03-02" "2017-03-07" "2017-03-12" "2017-03-17" "2017-03-22" "2017-03-27"
#[19] "2017-04-01" "2017-04-06" "2017-04-11" "2017-04-16" "2017-04-21" "2017-04-26"
#[25] "2017-05-01" "2017-05-06" "2017-05-11" "2017-05-16" "2017-05-21" "2017-05-26"
#[31] "2017-05-31" "2017-06-05" "2017-06-10" "2017-06-15" "2017-06-20" "2017-06-25"
#[37] "2017-06-30" "2017-07-05"

sales <- round(runif(48,min=50,max=100)) #生成48个随机数
ts(sales,start = c(2010,5),end = c(2014,4),frequency = 1) # 年 ts将向量转换为时间序列
ts(sales,start = c(2010,5),end = c(2014,4),frequency = 4) #季度
ts(sales,start = c(2010,5),end = c(2014,4),frequency = 12) #月份
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2010                  76  54 100  53  82  51  64  62
2011  68  95  62  96  51  82  81  81  78  52  99  71
2012  83  74  56  72  99  91  59  71  99  64  54  58
2013  87  95  73  93  96  82  90  92  65  97 100  87
2014  93  61  97  95 

#-------------------------------------------------#

Chapter 27 常见错误

#--------------------------------------------#

x <- (1,2,3) #定义向量要加c
x < -c(1,2,3) #赋值符号错误
x <-matrix(c(1:20,seq(1,12,3),4,4) #括号要正确使用
x <- c(one,two,three,4,5) #引号的问题,字符串要加上引号
install.packages (gclus) #安装包要加引号
x <- c(1,2,3,) #逗号的问题
state.x77[1]
plot(women$weight,women$height,pch=2,)

a=5
b=8
a==b #判断bool
a=b  #赋值
setwd("c:\Users\Default\") #路径 win需要两个\或使用一个/
x <- 1+2*3^4>5|| 15%%3>2 #优先级的问题

###注意大小写
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值