R语言 常见函数知识点梳理与解析 | 精选分析

论坛 期权论坛 期权     
数据驱动实践   2019-7-8 04:11   3481   0

目 录
1、str() 显示数据集和变量类型,并简要展示数据集情况
2、subset()  取子集
3、which.min(), which.max()和which()
4、pmin( )/ pmax( )
5、complete.cases( ) 判断对象中是否数据完全
6、grep()找出所数据框中元素所在的列值(仅数据框中)
7、assign()通过变量名的字符串来赋值
8、 split()根据因子变量拆分数据框/向量
9、unique()返回 x 但是省去重复的数值
10、round(),floor()和ceiling()
11、sign() 符号函数
12、%in% 检验x是否为集合y中的元素(x%in%y )
13、ls( )用来列出现存的所有对象

常见函数列表
14、数据管理相关
15、字符串处理函数
16、因子
17、数学计算
18、数组相关
19、逻辑运算
20、控制结构相关
21、自定义函数相关
22、输入输出
23、工作环境
24、简单统计量
25、时间序列

【往期回顾】
[h1]R语言 | 第一部分:数据预处理[/h1][h1]R语言|第2讲:生成数据[/h1][h1]R语言常用的数据输入与输出方法 | 第三讲[/h1]R语言数据管理与dplyr、tidyr | 第4讲
R语言 控制流:for、while、ifelse和自定义函数function|第5讲


正 文

1、str() 显示数据集和变量类型,并简要展示数据集情况
  1. > data(mtcars)
复制代码
  1. > str(mtcars)
复制代码
  1. 'data.frame':   32 obs. of  11 variables:
复制代码
  1. $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
复制代码
  1. $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
复制代码
  1. $ disp: num  160 160 108 258 360 ...
复制代码
  1. $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
复制代码
  1. $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
复制代码
  1. $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
复制代码
  1. $ qsec: num  16.5 17 18.6 19.4 17 ...
复制代码
  1. $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
复制代码
  1. $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
复制代码
  1. $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
复制代码
  1. $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
复制代码
2、subset()  取子集
条件筛选后,mtcars_df数据集为20 obs.
  1. > data(mtcars)
复制代码
  1. > str(mtcars)
复制代码
  1. 'data.frame':   32 obs. of  11 variables:
复制代码
  1. #……省略部分内容
复制代码
  1. $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
复制代码
  1. #……省略部分内容
复制代码
  1. [/code][code]> mtcars_df  3)
复制代码
  1. > str(mtcars_df)
复制代码
  1. 'data.frame':   20 obs. of  11 variables:
复制代码
  1. #……省略部分内容
复制代码
  1. $ wt  : num  3.21 3.44 3.46 3.57 3.19 ...
复制代码
  1. #……省略部分内容
复制代码
3、which.min(), which.max()和which()
which(), which.max(), which.min()返回的是位置(索引)

which(x, arr.ind = FALSE, useNames = TRUE)
x是一个向量或者数组;arr.ind = FALSE 默认返回数组索引
  1. > set.seed(1)
复制代码
  1. > x  x
复制代码
  1. [1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078 -0.8204684  0.4874291
复制代码
  1. [8]  0.7383247  0.5757814 -0.3053884
复制代码
  1. > which(x > 0) #显示x>0的所有数值
复制代码
  1. [1] 2 4 5 7 8 9
复制代码
  1. > which.min(x) #显示min(x)的所有数值的位置
复制代码
  1. [1] 3
复制代码
  1. > which.max(x) #显示max(x)的所有数值的位置
复制代码
  1. [1] 4
复制代码
  1. > plot(1:10,x) #如下图
复制代码


  1. > y  which(y > 5) #显示x>5的所有数值
复制代码
  1. [1]  6  7  8  9 10
复制代码
  1. > which(y > 5,arr.ind = TRUE) #显示x>5的所有数值的位置
复制代码
  1.      row col
复制代码
  1. [1,]   1   2
复制代码
  1. [2,]   2   2
复制代码
  1. [3,]   3   2
复制代码
  1. [4,]   4   2
复制代码
  1. [5,]   5   2
复制代码
  1. [/code]
  2. [b]4、pmin( )/ pmax( )[/b]
  3. 把多个等长度的向量按元素逐个对比,返回所有向量的第K个元素中最小(最大)值
  4. [list][*][*][*][*][*][*][*][/list][code]> x  y  
复制代码
  1. > pmin(x,y)
复制代码
  1. [1] 1 2 1 3 4
复制代码
  1. > pmax(x,y)
复制代码
  1. [1] 2 5 3 4 5
复制代码
5、complete.cases( ) 判断对象中是否数据完全
complete.case()可以判断对象中是否数据完全,然后返回TRUE, FALSE。这一函数在去除数据框中缺失值时很有用。
  1. > x  x
复制代码
  1.      [,1]
复制代码
  1. [1,]    1
复制代码
  1. [2,]    2
复制代码
  1. [3,]   NA
复制代码
  1. [4,]    4
复制代码
  1. > complete.cases(x)
复制代码
  1. [1]  TRUE  TRUE FALSE  TRUE
复制代码
  1. > x[complete.cases(x),]
复制代码
  1. [1] 1 2 4
复制代码
6、grep()找出所数据框中元素所在的列值(仅数据框中)
  1. > x  x
复制代码
  1.   X1 X2
复制代码
  1. 1  1 NA
复制代码
  1. 2  2  4
复制代码
  1. > grep(1,x)
复制代码
  1. [1] 1
复制代码
  1. > grep(2,x)
复制代码
  1. [1] 1
复制代码
  1. > grep(4,x)
复制代码
  1. [1] 2
复制代码
[h2][/h2][h2]7、assign()通过变量名的字符串来赋值[/h2]
  1. > assign("x",c(1:10))
复制代码
  1. > x
复制代码
  1. [1]  1  2  3  4  5  6  7  8  9 10
复制代码
[h2][/h2][h2]8、 split()根据因子变量拆分数据框/向量[/h2]split(x,f);x 可以为向量或者数据框,f 为对应的因子,函数以列表的形式返回

  1. > x = data.frame(matrix(1:10,nrow = 5))
复制代码
  1. > MorFM = c("Female","Male","Female","Female","Female")
复制代码
  1. > split(x,MorFM)
复制代码
  1. $Female
复制代码
  1.   X1 X2
复制代码
  1. 1  1  6
复制代码
  1. 3  3  8
复制代码
  1. 4  4  9
复制代码
  1. 5  5 10
复制代码
  1. [/code][code]$Male
复制代码
  1.   X1 X2
复制代码
  1. 2  2  7
复制代码
  1. [/code][code]> yx  yx$Female
复制代码
  1.   X1 X2
复制代码
  1. 1  1  6
复制代码
  1. 3  3  8
复制代码
  1. 4  4  9
复制代码
  1. 5  5 10
复制代码
  1. > yx$Male
复制代码
  1.   X1 X2
复制代码
  1. 2  2  7
复制代码
9、unique()返回 x 但是省去重复的数值
  1. > x  x
复制代码
  1. [1]  1  2  3  4  5  2  3  4  5  6  7  8  9 10  3  5
复制代码
  1. > unique(x)
复制代码
  1. [1]  1  2  3  4  5  6  7  8  9 10
复制代码
10、round(),floor()和ceiling()
round()四舍五入取整;floor()向下取整;ceiling()向上取整
  1. > round(3.5)
复制代码
  1. [1] 4
复制代码
  1. > floor(3.5)
复制代码
  1. [1] 3
复制代码
  1. > ceiling(3.5)
复制代码
  1. [1] 4
复制代码
11、sign() 符号函数
sign()根据其参数向量中的数值是正值、零、负值将其分别转化为1,0,-1
  1. > set.seed(1)
复制代码
  1. > x  x
复制代码
  1. [1] -0.62645381  0.18364332 -0.83562861  1.59528080  0.32950777 -0.82046838
复制代码
  1. [7]  0.48742905  0.73832471  0.57578135 -0.30538839  1.51178117  0.38984324
复制代码
  1. [13] -0.62124058 -2.21469989  1.12493092 -0.04493361 -0.01619026  0.94383621
复制代码
  1. [19]  0.82122120  0.59390132
复制代码
  1. > x_sign  x_sign
复制代码
  1. [1] -1  1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1
复制代码
  1. > plot(x,x_sign)
复制代码


12、%in% 检验x是否为集合y中的元素(x%in%y )

  1. > y  5%in%y
复制代码
  1. [1] TRUE
复制代码
  1. > 4%in%y
复制代码
  1. [1] FALSE
复制代码
[h2]13、ls( )用来列出现存的所有对象[/h2]pattern是一个具名参数,可以列出所有名称中含有字符串“s”的对象。
  1. > library(ggplot2)
复制代码
  1. > ls("package:ggplot2", pattern="geom_.a")
复制代码
  1. [1] "geom_bar"    "geom_label"  "geom_map"    "geom_path"   "geom_raster"
复制代码

其他函数列表
14、数据管理相关
vector:向量
numeric:数值型向量
logical:逻辑型向量
character;字符型向量
list:列表
data.frame:数据框
c:连接为向量或列表
length:求长度
subset:求子集
seq,from:to,sequence:等差序列
rep:重复
NA:缺失值
NULL:空对象
sort,order,unique,rev:排序
unlist:展开列表
attr,attributes:对象属性
mode,typeof:对象存储模式与类型
names:对象的名字属性

15、字符串处理函数
character:字符型向量
nchar:字符数
substr:取子串
format,format C:把对象用格式转换为字符串
paste,strsplit:连接或拆分
charmatch,pmatch:字符串匹配
grep,sub,gsub:模式匹配与替换



16、因子
factor:因子
codes:因子的编码
levels:因子的各水平的名字
nlevels:因子的水平个数
cut:把数值型对象分区间转换为因子
table:交叉频数表
split:按因子分组
aggregate:计算各数据子集的概括统计量
tapply:对“不规则”数组应用函数

17、数学计算
+, -, *, /, ^, %%, %/%:四则运算
ceiling,floor,round,signif,trunc,zapsmall:舍入
max,min,pmax,pmin:最大最小值
range:最大值和最小值
sum,prod:向量元素和积
cumsum,cumprod,cummax,cummin:累加、累乘
sort:排序
approx和approx fun:插值
diff:差分
sign:符号函数

18、数组相关
array:建立数组
matrix:生成矩阵
data.matrix:把数据框转换为数值型矩阵
lower.tri:矩阵的下三角部分
mat.or.vec:生成矩阵或向量 t:矩阵转置
cbind:把列合并为矩阵
rbind:把行合并为矩阵
diag:矩阵对角元素向量或生成对角矩阵
aperm:数组转置
nrow, ncol:计算数组的行数和列数
dim:对象的维向量
dimnames:对象的维名
row/colnames:行名或列名
%*%:矩阵乘法
crossprod:矩阵交叉乘积(内积)
outer:数组外积
kronecker:数组的Kronecker积
apply:对数组的某些维应用函数
tapply:对“不规则”数组应用函数
sweep:计算数组的概括统计量
aggregate:计算数据子集的概括统计量
scale:矩阵标准化
matplot:对矩阵各列绘图
cor:相关阵或协差阵
Contrast:对照矩阵
row:矩阵的行下标集
col:求列下标集


19、逻辑运算
,=,==,!=:比较运算符
!,&,&&,|,||,xor():逻辑运算符
logical:生成逻辑向量
all,any:逻辑向量都为真或存在真
ifelse():二者择一
match,%in%:查找
unique:找出互不相同的元素
which:找到真值下标集合
duplicated:找到重复元素

20、控制结构相关
if,else,ifelse,switch:分支
for,while,repeat,break,next:循环
apply,lapply,sapply,tapply,sweep:替代循环的函数。

21、自定义函数相关
function:函数定义
source:调用文件
call:函数调用

22、输入输出
cat,print:显示对象
sink:输出转向到指定文件
dump,save,dput,write:输出对象
scan,read.table,load,dget:读入

23、工作环境
ls,objects:显示对象列表
rm, remove:删除对象
q,quit:退出系统
.First,.Last:初始运行函数与退出运行函数。
options:系统选项
?,help,help.start,apropos:帮助功能
data:列出数据集

24、简单统计量
sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量
sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等

25、时间序列
ts:时间序列对象
diff:计算差分
time:时间序列的采样时间
window:时间窗

说明:本文中前半部分内容为作者自行整理,后半部分内容引自网络,稍作整理(蓝色标记部分是笔者认为比较常见和使用的函数)。

【推荐书籍】

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP