R语言---scale函数,match函数详解

  • 1. scale函数
  • 2. 两个向量匹配match和%in%
    • (1)match函数
    • (2)成员判断

1. scale函数

scale: Scaling and Centering of Matrix-like Objects
该函数共有两个参数center 和 scale,默认情况下均为TRUE,此情况下即为标准化zscore计算。
输入数据可以为一列数据,或者多列的matrix,会按列计算,计算过程与下面代码相同,计算结果相同。

df=mtcars[c("mpg","wt")]
scale(df)  ## zscore标准化
apply(df,2, function(x){(x-mean(x ,na.rm=T))/sd(x, na.rm=T)}) ##  ## 传入zscore标准化函数

sacle存在两个参数:

scale(x, center = TRUE, scale = TRUE)

举例说明(默认情况下,两个参数均为TRUE):

aa=c(1,3,5,7,9)
scale(aa)
[,1]
[1,] -1.265
[2,] -0.632
[3,]  0.000
[4,]  0.632
[5,]  1.265
attr(,"scaled:center")
[1] 5  ## 代表均值
attr(,"scaled:scale")
[1] 3.16 ## 代表sd

只进行中心化(每个值减去均值):

scale(aa, center = T, scale = F)[,1]
[1,]   -4
[2,]   -2
[3,]    0
[4,]    2
[5,]    4
attr(,"scaled:center")
[1] 5  ## 代表均值

只进行scale转化,不减均值:

scale(aa, scale=T,center = F)[,1]
[1,] 0.156
[2,] 0.467
[3,] 0.778
[4,] 1.090
[5,] 1.401
attr(,"scaled:scale")
[1] 6.42
## 计算过程
> aa/sqrt(sum(aa^2)/(length(aa)-1))
[1] 0.156 0.467 0.778 1.090 1.401> sqrt(sum(aa^2)/(length(aa)-1))
[1] 6.42 ## 上面6.42的计算过程

scale默认情况即为zscore标准化计算过程:

scale(aa) ## scale计算[,1]
[1,] -1.3270
[2,] -0.6286
[3,]  0.0698
[4,]  0.7683
[5,]  1.1175
attr(,"scaled:center")
[1] 4.8
attr(,"scaled:scale")
[1] 2.86(aa-mean(aa))/sd(aa)  ## 手动计算
[1] -1.3270 -0.6286  0.0698  0.7683  1.1175

如果数据中存在NA,则跳过此值:
比如均值计算为(1+8+3+5+7)/4 = 4.8, sd的计算过程一样,没有算入最后NA,正如下面aa和bb的scale结果一样。

aa  ## 数据1
[1] 1 3 5 7 8
scale(aa)[,1]
[1,] -1.3270
[2,] -0.6286
[3,]  0.0698
[4,]  0.7683
[5,]  1.1175
attr(,"scaled:center")
[1] 4.8
attr(,"scaled:scale")
[1] 2.86bb ## 数据2,包含NA
[1]  1  3  5  7  8 NA
scale(bb)[,1]
[1,] -1.3270
[2,] -0.6286
[3,]  0.0698
[4,]  0.7683
[5,]  1.1175
[6,]      NA
attr(,"scaled:center")
[1] 4.8
attr(,"scaled:scale")
[1] 2.86

2. 两个向量匹配match和%in%

(1)match函数

match函数用来匹配两个向量,在向量提取相同元素和不同元素方面可以使用。
match函数共包含四个参数:

match(x, y, nomatch = NA_integer_, incomparables = NULL)
## 直观的功能和 %in% 作用相似
x %in% yx:vector or NULL: the values to be matched. Long vectors are supported.
y:vector or NULL: the values to be matched against. Long vectors are not supported.
nomatch:the value to be returned in the case when no match is found. Note that it is coerced to integer.
incomparables:a vector of values that cannot be matched. Any value in x matching a value in this vector is assigned the nomatch value. For historical reasons, FALSE is equivalent to NULL.

match的含义是找出a中元素在b中的位置,举例说明:

a=c("A","B","C","D")
b=c("A","C","D","E")
match(a,b) ## 返回b中与a相同元素的index
[1]  1 NA  2  3
b[match(a,b)] ## 在b中将相同的元素提取出来
[1] "A" NA  "C" "D"

剔除上面结果中的NA:

as.vector(na.omit(b[match(a,b)]))

提取差集(仅存在b中,不存在a中的元素):
由于返回值存在NA,也就是b中并未完全包括a中元素,因此直接使用 b[-match(a,b)]会报错。

> b[-match(a,b)]
Error in b[-match(a, b)] : 只有负下标里才能有零
> -match(a,b)
[1] -1 NA -2 -3
> b[c(-1,-2,-3)]
[1] "E"
> b
[1] "A" "C" "D" "E"
或者使用上面的剔除NA:
b[-as.vector(na.omit(match(a,b)))]
(2)成员判断

成员判断使用%in%

a=c("A","B","C","D")
b=c("A","C","D","E")a[a %in% b]  ## 提取a,b共有元素
sum(a %in% b) ## 统计共有元素的个数
a[ !a %in% b] ## 提取仅在a中存在的元素## 输出如下:
> a[a %in% b]
[1] "A" "C" "D"
> sum(a %in% b)
[1] 3
> a[ !a %in% b]
[1] "B"

综上看出,如果数据量级不同,为了更准确的进行后续分析,需要使用scale进行zscore标准化;
关于两个向量匹配,%in%和match都很方便,按自己习惯来。

参考:
https://www.jianshu.com/p/3173ee73ec7e (match函数)
RStudio >?scale

R语言---scale函数,match函数和%in%详解相关推荐

  1. python r语言 结合 部署_(转)python中调用R语言通过rpy2 进行交互安装配置详解...

    python中调用R语言通过rpy2 进行详解 1.R语言的安装: 大家进行R语言的安装,在安装好R后,需要配置环境变量R才能进行使用. 对此电脑右键->选择高级设置->环境变量-> ...

  2. R语言之read.table与write.table详解

    2019独角兽企业重金招聘Python工程师标准>>> ‍数据的各种形式 一般而言, 数据的每一行的不同元素可由tab键(txt文件), 逗号(csv文件), 空格等隔开. 另外, ...

  3. R语言scale函数标准化缩放dataframe数据列实战

    R语言scale函数标准化缩放dataframe数据列实战 目录 R语言scale函数标准化缩放dataframe数据列实战 #仿真数据

  4. R语言 变量的操作函数

    R语言 变量的操作函数 1.变量变换 as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.charact ...

  5. 机器学习之R语言caret包trainControl函数(控制调参)

    机器学习之R语言caret包trainControl函数(控制调参) trainControl参数详解 源码 参数详解 示例 trainControl参数详解 源码 caret::trainContr ...

  6. R语言使用download.file函数下载网络文件到本地(Download File from the Internet)

    R语言使用download.file函数下载网络文件到本地(Download File from the Internet) 目录 R语言使用download.file函数下载网络文件到本地(Down ...

  7. R语言stringr包str_dup函数字符串多次复制实战

    R语言stringr包str_dup函数字符串多次复制实战 目录 R语言stringr包str_dup函数字符串多次复制实战 #导入stringr包 #仿真数据

  8. R语言stringr包str_count函数计算字符串匹配个数实战

    R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据

  9. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  10. R语言使用t.test函数计算两组独立数据的t检验(Independent t-test)

    R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) 目录 R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) #仿真数据

最新文章

  1. 百度地图api location 211 sn校验失败
  2. boost::proto::flatten相关的测试程序
  3. ajax回显500因为#与$的原因
  4. SpringMVC 控制器默认支持GET和POST两种方式
  5. 以下会使线程进入到阻塞状态的是_Python并行编程(五):多线程同步之event(事件)...
  6. 虚拟机,win server 2008,路由交换,实验报告
  7. linux下输入法安装设置及中文字体安装
  8. Java课程设计之简易计算器:设计的计算器应用程序是基于AWT的,可以完成加法、减法、乘法、除法和取余运算。
  9. 进程之间有哪些通信方式
  10. Eureka注册服务列表显示ip+端口
  11. 移动支付服务商加盟/微信支付宝扫码支付代理加盟
  12. 华为任正非:​不为假动作付酬
  13. Debian/Ubuntu安装ps,ping,telnet命令
  14. 246Echarts - 3D 曲面(Image Surface Sushuang)
  15. JS 对象转换为数组
  16. Qt实现路径渐变,绘制彩色的线条
  17. APICloud携手洋葱开启APP开发“刷脸时代”
  18. 翻遍100个网站,为你找到了2019年最好看的18张数据可视化
  19. 女人可以不漂亮,但一定要精致
  20. 用python写一个车牌号识别系统

热门文章

  1. arm架构下spinlock原理 (代码解读)
  2. BTT6030芯片手册
  3. 个人管理 - 如何演讲
  4. 3d布衣天下1手机调试html,真精华布衣天下3d
  5. 【调剂】2021年齐齐哈尔大学朱磊教授课题组招收通信与信息系统、电子信息相关专业硕士调剂...
  6. 第三方可视化数据分析图表Pyecharts(下载保存图片(生成的html图片)、zip函数(将数据转换为列表加元组的格式)、南丁格尔玫瑰图、双y轴可视化、饼形图和环形图)
  7. mysql 正则表达式 包含中文_MYSQL 中文检索匹配与正则表达式
  8. Revealing Module(揭示模块)模式
  9. 虚拟服务器 emule,emule服务器
  10. 网站被黑总被跳转到其他网站的处理解决过程