为了账号安全,请及时绑定邮箱和手机立即绑定

R语言学习-常用的数据处理函数

标签:
SQL Server

Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使用的基础函数。

一,合并向量

函数append()用于修改合并向量,可以把两个向量合并为一个:

append(x, values, after = length(x))

例如:从一个向量的指定位置处,插入另一个向量:

> append(1:5, 0:1, after = 3)[1] 1 2 3 0 1 4 5

二,匹配函数

匹配函数(match)返回一个位置向量,表示 x 匹配table的位置。%in% 返回一个逻辑向量,表示左边的操作符是否匹配右边的操作符。

match(x, table, nomatch = NA_integer_, incomparables = NULL)x %in% table

参数注释:

  • nomatch:不匹配时,函数返回的整数值。

  • incomparables :指定不能匹配的值的向量,在x向量中的任何值,如果是incomparables参数中的值,那么返回nomatch参数的值。由于历史原因,FALSE 和NULL相等。

操作符 %in% 在底层使用match()函数实现:

function(x, table) match(x, table, nomatch = 0) > 0

例如,返回左侧向量的元素匹配右侧向量的逻辑值:

> 1:10 %in% c(1,3,5,9) [1]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE

三,范围函数

range() 函数用于返回一个数值向量的最值(最大值和最小值):

range(..., na.rm = FALSE)

参数na.rm 是逻辑值,指定NA是否被忽略。

是,排名函数

排名函数用于对向量元素进行排名,按照升序的顺序对数据进行排序:

rank(x, na.last = TRUE,     ties.method = c("average", "first", "last", "random", "max", "min"))

参数注释:

  • na.last :控制如何对待NA,如果设置为TRUE,那么缺失值排在最后一位;如果为FALSE,那么缺失值排在第一位;如果设置为NA,那么缺失值被移除;如果设置为keep,那么排名为NA。

  • ties.method :控制如何对待tie,一个tie是指值重复的元素。

例如,对向量进行排名,把排名的结果存储到变量中:

> r1 <- rank(x1 <- c(3, 1, 4, 15, 92))> r1[1] 2 1 3 4 5

五,替换

函数replace()用于把向量中指定位置的元素替换为指定的值(或向量):

replace(x, list, values)

参数注释:

  • list:整数向量,指定被替换的元素的位置

  • values:替换的值(或向量)

例如,把向量的第1个、第3个和第7个的元素值替换为0:

> replace(1:9,c(1,3,7),0)[1] 0 2 0 4 5 6 0 8 9

六,重复

rep()函数把输入的参数重复多次,如果参数是表达式,rep()函数会把表达式的结果重复多次;而replicate()函数是重复调用表达式,每次调用表达式的过程都是独立的,这意味着,如果产生随机数,rep()函数产生的随机数是”伪随机的“,重复第一次产生的随机数,而replicate()函数产生的随机数是真正意义上的随机数,每次都不相同。

> rep(runif(1),5)[1] 0.8721105 0.8721105 0.8721105 0.8721105 0.8721105> replicate(5,runif(1))[1] 0.9426709 0.1280271 0.1926333 0.7091503 0.5404846

七,逆转

rev()函数用于把一个向量的元素逆转:

> rev(c(1,5,3,7))[1] 7 3 5 1

八,排序

sort()函数用于对向量排序,返回有序的向量;order()函数返回向量元素的序号,能够用于对data.frame排序:

order(..., na.last = TRUE, decreasing = FALSE, method = c("auto", "shell", "radix"))sort(x, decreasing = FALSE, na.last = NA, ...)

例如,使用order()函数按照数据框的y列进行排序:

复制代码

> df <- data.frame(x=c(6,3,7,5),y=c(5,1,7,3))> df  x y1 6 52 3 13 7 74 5 3> df[order(df$y),]  x y2 3 14 5 31 6 53 7 7

复制代码

九,去重函数

unique() 函数用于移除重复数据,能够返回向量,数据框或数组:

unique(x, incomparables = FALSE)

ncomparables:用于指定不能比较的值构成的向量。FALSE是一个特殊的值,表示所有的值都可以比较。

十,逻辑TRUE的索引

which()函数,用于从逻辑向量中返回TRUE值在向量中的索引,参数x是一个由逻辑值构成的向量:

which(x)

例如,使用which()函数返回逻辑向量中TRUE值的索引:

> which(lv <- c(TRUE, FALSE, TRUE, NA, FALSE, FALSE, TRUE))[1] 1 3 7> which(exper <- c(1:9)>5)[1] 6 7 8 9

十一,构造环境

常用于数据框,使R表达式位于数据框的作用环境中,便于对数据框变量的引用:

with(data, expr, ...)within(data, expr, ...)

这两个函数的区别是:with()函数只能定义一个变量,而within()函数可以定义多个变量:

复制代码

with(mtcars, mpg[cyl == 8  &  disp > 350])#only define one variablemtcars$mpg[mtcars$cyl == 8  &  mtcars$disp > 350]#define  multiple variablesaq <- within(airquality, {     # multiple vars can be changed    lOzone <- log(Ozone)    Month <- factor(month.abb[Month])    cTemp <- round((Temp - 32) * 5/9, 1)     S.cT <- Solar.R / cTemp  # using the newly created variable    rm(Day, Temp)})

复制代码

十二,Reduce函数

Reduce()函数对一个向量循环执行函数(该函数有两个参数),Reduce()函数的定义是:

Reduce(f, x, init, right = FALSE, accumulate = FALSE)

参数注释:

  • f :有两个参数的函数对象

  • x:向量

  • init :一个标量值,类型和x向量的元素相同;

  • right :逻辑值,当值为FALSE时,从向量的左侧开始,依次向右侧取出元素传递到给函数;当值为TRUE时,从向量的右侧开始,依次向左侧取出元素,传递给函数;

  • accumulate:逻辑值,a logical indicating whether the successive reduce combinations should be accumulated. By default, only the final combination is used.

例如,计算一个向量的累加和,首先,把初始值和向量的第一个元素1传递给sum()函数,计算出结果11,然后,把11和向量的第二个元素传递给函数sum(),计算出结果13,依次类推:

> Reduce(sum,1:5,10)[1] 25

Reduce()函数内部执行的过程等价于:

a <- sum(10,1)b <- sum(a,2)c <- sum(b,3)d <- sum(c,4)sum(d,5)

十三:条件过滤器

按照条件从向量中选择元素,当条件为TRUE时,把该元素添加到结果向量中。参数 f 是一个返回逻辑值的函数(该函数必须有一个输入参数),参数x是一个向量:

Filter(f, x)

例如,从一个数值向量中,选择元素值大于5的元素:

> fx <- function(x) x>5;> Filter(fx,1:10)[1]  6  7  8  9 10

 

参考文档:

The R Base Package

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消