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 y 1 6 5 2 3 1 3 7 7 4 5 3 > df[order(df$y),] x y 2 3 1 4 5 3 1 6 5 3 7 7
九,去重函数
unique() 函数用于移除重复数据,能够返回向量,数据框或数组:
unique(x, incomparables = FALSE)
ncomparables:用于指定不能比较的值构成的向量。FALSE是一个特殊的值,表示所有的值都可以比较。
十,which函数
which()函数,用于从逻辑对象中返回TRUE值所在的索引:
which(x, arr.ind = FALSE, useNames = TRUE)
arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)
参数注释:
arr.ind:逻辑值,用于指定:当x是数组时,是否返回数组的索引?
- If
arr.ind == FALSE
(the default), an integer vector withlength
equal tosum(x)
, i.e., to the number ofTRUE
s inx
; Basically, the result is(1:length(x))[x]
. - If
arr.ind == TRUE
andx
is anarray
(has adim
attribute), the result isarrayInd(which(x), dim(x), dimnames(x))
, namely a matrix whose rows each are the indices of one element ofx
;
例如,使用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 variable mtcars$mpg[mtcars$cyl == 8 & mtcars$disp > 350] #define multiple variables aq <- 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) })
参考文档:
请发表评论