R语言学习笔记--《R语言实战》


R语言基础

一、数据结构

1. 向量

2. 矩阵

y <- matrix(DATA,nrow = n1,ncol = n2,byrow = TRUE(default:false),dimnames = list(string_row,string_col)

out:
   B1 B2 B3 B4   
A1  1  2  3  4
A2  5  6  7  8
A3  9 10 11 12
A4 13 14 15 16
A5 17 18 19 20
-----------------------------------------------------------------------------
# 索引 y[row,col]
>y[1,]  # 第一行
	B1 B2 B3 B4 
	 1  2  3  4
>y[,1]  # 第一列
	A1 A2 A3 A4 A5 
	 1  5  9 13 17 
>y[c(1:3),] # 1至3行
>y[c(1,3),] # 第1行,第3行

3. 数组

z <- matrix(1:20,c(4,5),dimnames = list(dim1,dim2,dim3))

4. 数据框

### data <- data.frame(col1,col2,col3....)
patientID <- c(1:4)
age <- c(17,26,29,22)
diabetes <- c("type1""type2","type2","type1")
status <- c("excellent","poor","excellent","improved")
patientdata <- data.frame(patientID,age,diabetes,status)

out:
  patientID age diabetes    status
1         1  17    type1 excellent
2         2  26    type2      poor
3         3  29    type2 excellent
4         4  22    type1  improved
-----------------------------------------------------------------------
## 选取数据
patientdata[1,] # 选取第一行
patientdata$patientID # 选取特定数据
-----
## attach()、detach()和with()简化代码
# attach()后记得detach()
> attach(patientdata)
The following objects are masked _by_ .GlobalEnv:

    age, diabetes, patientID, status

> age
[1] 17 26 29 22
> diabetes
[1] "type1" "type2" "type2" "type1"
> detach(patientdata)
---------------------------
# with()  即用即丢
> with(patientdata,{print(summary(age))
+     plot(patientID,age)
+     })
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  17.00   20.75   24.00   23.50   26.75   29.00 

5.列表

# mylist <- list(object1,object2,object3....)
# object指的是包括向量、矩阵(matrix)、数组(array)、数据框(data.frame)在内的所有对象
> string <- "my first list"
> number <- c(1,3,5,7)
> matrix <- matrix(1:12,c(3,4))
> string2 <- c("one","two","three")
> mylist <- list(title=string,numbers=number,matrix,string2)
> mylist
$title
[1] "my first list"

$numbers
[1] 1 3 5 7

[[3]]
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

[[4]]
[1] "one"   "two"   "three"
-------------------------------------
# 读取数据
mylist$title
mylist[["numbers"]]
mylist[[3]]

二、数据输入

1.键盘输入

> mydata <- data.frame(age=numeric(0),gender=character(0)) 
> mydata <- edit(mydata)

2.分隔符文本输入 (csv)

mycsv <- read.table("rtest.csv",sep=',',header = TRUE)
""
seq: 分隔符
header: 文件是否含有标头,默认False
""

mycsv <- str(csv)

图形初阶

一、图形参数

函数par()对基本图形参数进行调整和修改

opar <- par(no.readonly = TRUE)
par(option1=value,opetion2=value,option3=value....)
ploy(x,y,,type="value") 
par(opar) # 还原环境
""
value: 

 - "p" 散点图
 - "l" 实线图
 - "b" 点and实线
 - "o" 点and实线(穿过点)
 - "h" 点到x轴的竖线
 - "s" 阶梯形曲线
 - "S" 同上
 - "n" 不画
""

1.符号和线条

plot(x,y,type="value",pch="value",lty="value",cex="value",lwd="value")

""
pch 点符号样式 point character
lty 线条样式   line type 
cex 点符号缩放倍数  
lwd 线宽倍数  line width
""

在这里插入图片描述在这里插入图片描述

2.颜色、文本、字体

# 颜色
col	 	default; col=c("red", "blue")循环颜色	 
col.axis 坐标轴刻度文字的颜色	 
col.lab	 坐标轴标签(名称)的颜色	 
col.main 标题颜色	 
col.sub	 副标题颜色	 
fg	 	 图形的前景色	 
bg	 	 图形的背景色

# 文本大小
cex	        缩放倍数的数值
cex.axis	坐标轴刻度文字的缩放倍数
cex.lab	 	坐标轴标签的缩放倍数
cex.main	标题的缩放倍数
cex.sub	 	副标题的缩放倍数

# 字体样式
font	    1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体	 
font.axis	坐标轴刻度文字样式 
font.lab	坐标轴标签样式
font.main	标题样式	 
font.sub	副标题样式 
ps	 	    字体磅值	 
family	 	字体族

3.图形尺寸

par(pin=c(w,h),mai=c(5,4,4,2))

""
pin	 	以英寸表示的图形尺寸(宽和高)	 
mai	 	边界大小,顺序为“下、左、上、右”,单位为英寸	 
mar	 	同上,单位为英分
""

二、文本添加

1. 标题、坐标轴、图例

  • plot()或par() : main=“Char”[标题]、xlab;ylab[坐标轴]、sub[副标题]
  • 特定函数:title()、axis()、legend()、abline()[参考线]
# title() 用于**添加**标题或坐标轴标签,需去除默认标题(ann=false)
title(main="char",col.main="red",
      sub="char",col.sub="pink",
      xlab="char",ylab="char",
      col.lab="green",cex.lab=0.75)

# axis()  用于**添加**标题或坐标轴标签,需去除默认标题(axes=false)
side=int  绘制坐标轴,1=下;2=左;3=上;4=右
at=数值   绘制刻度线的位置(需要指定边side=)
labels=char  刻度线的文字标签(需要指定side、at)
pos       坐标轴绘制位置
lty
col
las       标签是否平行于(=0),或垂直于(=2)坐标轴

# legend()
legend(location,title="char",c("legend_name1","legend_name2"...),
		pch=c(int1,int2...),lty=c(int1,int2...),col=c("char1","char2"...)

#abline()
abline(h=yvalues,v=xvalues,lty=int,col="char")

2.标注

  • 文本标注: text()
  • 数字标注:plotmath()
# text()
text(location,"text to place",pos,col,font,cex)
""
location : x轴,y轴值
"text to place" : 文本内容
pos:文本在点的方向 1=下,2=左,3=上,4=""

3.图形组合

  • par()
  • layout()
# par()
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2)) # 上下两行各两幅图  mfrow(3,1) 从上之下三行图
plot()
plot()
hist() # 柱形图
boxplot # 箱线图
par(opar)

# layout()
layout(matrix(c(1,1,2,3)),2,2,byrow=TRUE) # 第一行一幅图,第二行两幅图
""
精细调整
widths=c(int1,int2) # 水平图形宽比为 int1:int2
heights=c(int1,int2) # 垂直图形高比为 int1:int2
""

数据管理

一、数据框变量

1.变量创建、修改、添加

# 创建
mydata <- data.frame(col1=,col2=...)

# 修改变量值
mydata$col1 <- c("","",""...)

# 修改变量名
names(mtdata)[3] <- "newname" # names() 修改指定列变量名

library(plyr)   # plyr包
patientdata <- rename(patientdata,c(col1="newname"))

# 添加
patientdata$new_variate <- NA
# 条件判断赋予值
mydata$new_variate[col1 <= int] <- "value"  

mydata <- within(mydata,{
						new_variate <- NA
						new_variate[col1 <= int] <- "value1"
						new_variate[col1 == ""] <- "value2"
						......
})

2.数据类型转换、数据排序

  • is.datatype() 函数返回TRUE、FALSE
  • as.datatype() 转换为相应数据类型,如numeric、character、matrix、data.frame等
# 数据排序
newdata <- mydata[order(mydata$col1),] # order()函数 默认升序

# 先按col1升序排序,再按col2降序排序
newdata <- mydata[order(mydata$col1,-mydata$col2),]

3. 数据集合并、数据集取子集

# 合并列 merge()
total <- merge(mydata1,mydata2,by = "ID")
# 合并行 rbind() 纵向合并
total <- merge(mydata1,mydata2)

# 取子集或删除变量
mydata2 <- mydata1[c(1,3),c(2,4)]  # 取第1,3行,第2,4列
mydata$del <- NULL

二、高级数据

1.数学函数与统计函数

  • 数学函数
    在这里插入图片描述
  • 统计函数
    在这里插入图片描述

2.控制流(循环与条件)

(条件){statement}

  • 循环\重复
# for结构
for (var in seq) statement
"如 for (i in 1:10) print("hello")"
# while结构
while (cond) statement
""如
i = 10
while (i>0) {print("hello");i = i - 1}
""
  • 条件执行
# if-else结构
if (cond) statement
if (cond) statement1 else statement2
"如 if (is.character(grade) x= as.factor(grade))"
"if (is.character(grade) x= as.factor(grade) else print("Grade is a factor")"

#ifelse结构
ifelse(cond,statement1,statement2)

# switch结构


3.自定义函数

myfunction = function(arg1,arg2,...) {
	statement
	return(object)
}

4.整合与重构

  • 数据集的转置(反转行和列)
t(frame)
  • 整合数据
aggregate(x,by=list(),FUN)
"x待整合的数据对象 by数据集变量名组成的列表 , FUN=统计函数(如mean、sum)"
  • reshape2包
# 融合 melt()
md = melt(mydata,id=c("ID","Time")) # ID\Time列为测量变量名,融合其他数据

# 重铸 dcast()
dcast(md,formula,fun.aggregate) # fun.aggregate可选(整合与不整合)

在这里插入图片描述

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值