R语言实战
2020-09-14 本文已影响0人
豆沙了
https://github.com/kabacoff/RiA2
第一部分 入门
第1章 R语言介绍
load(".RData")
source("filename") # 执行一个脚本
.libPaths() # 显示库所在位置
library() # 显示库中有哪些包
search() # 哪些包已加载
help(package = "vcd") # 某个包的简短描述
第2章 创建数据集
data.frame() # 创建数据框
patientdata[c("diabetes","status")] # 选取数据框中的列
# 函数with
with(mtcars,{
print(summary(mpg))
plot(mpg,disp)
plot(mpg,wt)
})
特殊赋值符 <<-
patientdata <- data.frame(patientID, age, diabetes, status, row.names=age)
sex <- factor(sex, levels = c(1,2), labels = c("male","female"))
str() # 显示对象结构
summary() # 显示对象的统计概要
class() # 显示对象类型
# 列表
mylist <- list(title=g, ages=h, j, k)
mylist[[2]]
mylist[["ages"]]
mylist$ages
第3章 图形初阶
library(RColorBrewer)
# 复制一份当前的图形参数设置
opar <- par(no.readonly=TRUE)
par(pin=c(2, 3))
par(opar)
par(ask=TRUE) # 按<Return>键来看下一个图
axis(2, at=x, labels=x, col.axis="red", las=2) # 自定义坐标轴
# 文本标注
text(wt, mpg,
row.names(mtcars),
cex=0.6, pos=4, col="red")
text(3,3,"Example of default text")
# 图形组合
par(mfrow=c(2,2))
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
第4章 基本数据管理
mydata <- transform(mydata,
sumx = x1 + x2,
meanx = (x1 + x2)/2) # 增加列
names(leadership)[2] <- "testDate" # 列名修改
leadership[age == 99, "age"] <- NA
leadership$age[leadership$age == 99] <- NA
newdata <- na.omit(leadership)
# 排序
newdata <- leadership[order(leadership$age),]
newdata <- leadership[order(gender, age),]
newdata <- leadership[order(gender, -age),]
cbind() # 数据框横向合并
rbind() # 纵向合并
# 剔除变量
myvars <- names(leadership) %in% c("q3", "q4")
leadership[!myvars]
newdata <- leadership[c(-8,-9)] # 已知变量位置
# subset选择
newdata <- subset(leadership, age >= 35 | age < 24,
select=c(q1, q2, q3, q4))
newdata <- subset(leadership, gender=="M" & age > 25,
select=gender:q4)
第5章 高级数据管理
set.seed(1234)
runif(5)
x <- pretty(c(-3,3),30) # 连续分割为30个区间(31个数)
apply(mydata, 1, mean) # 计算每行均值
# 分列
name <- strsplit((roster$Student), " ") # 返回列表
Lastname <- sapply(name, "[", 2)
Firstname <- sapply(name, "[", 1)
# 整合数据
aggdata <-aggregate(mtcars, by=list(cyl,gear),
FUN=mean, na.rm=TRUE) # cyl,gear归类,其他列求平均值
# reshape2 包
melt, dcast
scale(mydata)*SD+M # 任意均值和标准差的标准化
# 概率函数
d = 密度函数(density)
p = 分布函数(distribution function)
q = 分位数函数(quantile function)
r = 生成随机数(随机偏差)
nchar() # 字符数量
substr(x,2,3) <- "aa" # 替换
grep, sub # 搜素某个文本字符串或正则表达式
seq(1,10,2)
for (i in 1:10) print("hello")
if (cond) stat1 else stat2
第二部分 基本方法
第6章 基本图形
paste(lbls, pct) # 合并两个向量
hist(mtcars$mpg, breaks=12) # 指定组数
# 轴须图
# 可比较的核密度图 P121 代码清单6-8
# 箱线图
boxplot.stats()
# 小提琴图
# 点图
第7章 基本统计分析
sapply(mtcars[myvars],fivenum) # 多列
fivenum() # 返回最小值 下四分位数 中位数 上四分位数 最大值
var() # 样本方差
多种R包计算描述性统计量
# 一维
table() # 默认忽略NA
prop.table(mytable)
prop.table()*100
# 二维
table(A,B)
xtabs(~A+B,data=)
addmargins() # 边际和
# 独立性检验
chisq.test() # 卡方独立性检验
fisher.test() # Fisher精确检验
mantelhaen.test() # Cochran-Mantel—Haenszel检验
# 相关
cor()
cov() # 协方差
pcor() # 偏相关
corr.test() # psych包 显著性检验
pcor.test()