R语言函数

2023-12-19 21:47:39 浏览数 (1)

1.初级统计(R_01)

代码语言:javascript复制
x<-(1,2,3,4,5,6)
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
range(x)#返回最小值和最大值
var(x) #方差
sd(x) #标准差
sum(x) #总和
abs(x)#绝对值
sqrt(x)#平方根
log(16,base=2)# >4 计算16的log值,底数为2
exp(x)#计算向量x中每一个元素的指数
round(3.1415,digits=2)#保留2位小数,3.14
signif(3.1415,digits=2)#保留2位有效数字,3.1
prod(2,4,5)#>40 连乘的积
quantile(x,c(0.3,0.8))# 计算x的三分位数和八分位数

length(x) #长度
unique(x) #去重复
duplicated(x) #对应元素是否重复
table(x) #重复值统计
sort(x)#排序
sort(x,decreasing = F)#升序(默认)
sort(x,decreasing = T)#降序
ceiling(x)#返回大于x的最小整数
floor()#返回小于x的最小整数
trunc()#返回整数部分
which.max(c(1,2,3,5,6))#返回最大值所在位置,5

2.有重复的用rep(),有规律的序列用seq(),随机数用rnorm()

代码语言:javascript复制
rep("x",times=3)#>x,x,x

x<-c(1,2,3)
rep(x,each=3)#>1,1,1,2,2,2,3,3,3
rep(x,3)#>1,2,3,1,2,3,1,2,3
rep(x,c(4,2,1))#>1,1,1,1,2,2,3

seq(from=3,to=21,by=3)
seq(from=3,to=21,by=3,length.out=10)#控制输出的元素个数为10
代码语言:javascript复制
通过组合,产生更为复杂的向量。
 paste0(rep("x",times=3),1:3)#"x1" "x2" "x3"

3.连接——paste、paste0

代码语言:javascript复制
x = c(1,3,5,6,2)
y = c(3,2,5,1,0)
paste(x,y)#x和y之间有空格
paste(x,y,sep=",")
paste(x,y,sep = "")#消除空格

#paste与paste0的区别
paste0(x,y)#paste0没有sep参数,x和y之间无空格
代码语言:javascript复制
#当两个向量长度不一致
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y #循环补齐:y不断循环(3,2,5,3,2,5)
#利用循环补齐简化代码
paste0(rep("x",3),1:3)#省略times=3
paste0("x",1:3)
paste0("x",seq(2,12,2))#seq(from=2,to=12,by=2)的省略

4.交集 并集 差集

代码语言:javascript复制
intersect(x,y)
union(x,y)
setdiff(x,y)#差集(在x里面有,在y里面没有)
setdiff(y,x)#差集(在y里面有。在x里面没有)

5.%in%

代码语言:javascript复制
x %in% y #x的每个元素在y中存在吗
y %in% x #y的每个元素在x中存在吗
#取交集intersect会去重复,而%in%不会

6.向量筛选(取子集)——[]

代码语言:javascript复制
x <- 8:12
#根据逻辑值取子集
x[x==10]#[]即将TRUE的值挑选出来,FALSE丢弃(x[FALSE,FALSE,TRUE,FALSE,FALSE])
x[x<12]
x[x %in% c(9,13)]

#根据位置取子集
x[4]
x[2:4]#取第2-4个元素
x[c(1,5)]#取第1和第5个元素
x[-4]#去掉第4个元素
x[-(2:4)]#去掉第2到第4个元素
x[x<10]#取x<10的数
#x[x<-2]改为x[x< -2],注意区分赋值号和小于-2

####修改向量中的某个/某些元素:取子集 赋值
x
#改一个元素
x[4] <- 40#将x中的第4个值改为40

#改多个元素
x[c(1,5)] <- c(80,20)#将第1个数改为80,第5个数改为20


g[g %in% s]#向量g中有多少个元素在向量s中存在?将这些元素筛选出来

7.隐式循环——apply(R_04)

代码语言:javascript复制
 apply 处理矩阵或数据框:
#apply(X, MARGIN, FUN, …) 
#其中X是数据框/矩阵名;
#MARGIN为1表示行,为2表示列,FUN是函数

test<- iris[1:6,1:4]
apply(test, 2, mean)#求test所有列的平均值
apply(test, 1, sum)#求test所有行的和

7.2.lapply(list, FUN, …) —— 对列表/向量中的每个元素(向量)实施相同的操作

代码语言:javascript复制
test <- list(x = 36:33,y = 32:35,z = 30:27);test#返回值是列表
lapply(test,mean)
lapply(test,fivenum)

#sapply 简化结果,返回矩阵或向量
sapply(test,mean)
sapply(test,fivenum)

8.两个数据框的连接

代码语言:javascript复制
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
                    group = c("group1","group1","group2","group2"),
                    vision = c(4.2,4.3,4.9,4.5))
test2
library(dplyr)
inner_join(test1,test2,by="name")#交集(两个数据框都有的姓名)
right_join(test1,test2,by="name")#右边说了算,左边表的人留下,无的填充NA
full_join(test1,test2,by="name")#全部
semi_join(test1,test2,by="name")#半连接:左边的表取子集(将右边的表中存在的人留下)
anti_join(test1,test2,by="name")#反连接:左边的表取子集(将右边的表中不存在的人留下)

9.插入值/删除值

代码语言:javascript复制
v<-c(1,2,3,5,6)
append(x=v,values=4,after=3)#在向量v第3个数值后面插入值4
代码语言:javascript复制
v <- v[-c(1:3)]#删除前3个数

10.运算符号(向量元素个数不同时,循环补齐,长的向量元素个数必须是短的整数倍)

代码语言:javascript复制
x**y#幂运算
y%%x#求余
y%/%x#整除运算

11.分组

代码语言:javascript复制
cut(1:100,c(seq(0,100,10))

12.提取字符串(substr/toupper/tolower)

代码语言:javascript复制
> substr(month.name,1,3)
 [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
> Mon <- substr(month.name,1,3)
> toupper(Mon)#转换为大写
 [1] "JAN" "FEB" "MAR" "APR" "MAY" "JUN" "JUL" "AUG" "SEP" "OCT" "NOV" "DEC"
> tolower(Mon)#转换为小写
 [1] "jan" "feb" "mar" "apr" "may" "jun" "jul" "aug" "sep" "oct" "nov" "dec"
> gsub("^(\w)", "\U\1",tolower(Mon),perl = TRUE)#将向量Mon中的每一个元素首字母大写
 [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
> gsub("^(\w)", "\L\1",toupper(Mon),perl = TRUE)#首字母小写,其他大写
 [1] "jAN" "fEB" "mAR" "aPR" "mAY" "jUN" "jUL" "aUG" "sEP" "oCT" "nOV" "dEC"

13.查找字符串(grep/match)

代码语言:javascript复制
> x <- c("b","A ","AC")
> grep ("A ",x,fixed=TRUE)#返回值为元素所在位置
[1] 2
> grep ("A ",x,fixed=FALSE)#fixed=FALSE表示支持正则表达式
[1] 2 3
> match("AC",x)#不支持正则表达式
[1] 3

14.取样(sample)

代码语言:javascript复制
x <- 1:100
sample(x,30)#随机取30个数
sample(x,30,replace = T)#可替代(即可重复抽样)
sample(x,60,replace = F)

15.t/rev

代码语言:javascript复制
sractm <- t(mtcars)#翻转数据框的行与列
rev(letters)#向量中各元素翻转

16.scal

代码语言:javascript复制
scale(state.x77,center = T)#中心化
scale(state.x77,scale = T)#标准化
x <- ,center = T)

17.分割字符串 strsplit

代码语言:javascript复制
> path <- "usr/local/bin/R"
> strsplit(path,"/")#返回值为列表                                
[[1]]
[1] "usr"   "local" "bin"   "R"  

18.修改数据框

代码语言:javascript复制
transform(women, height = height*2.54)
transform(women, cm = height*2.54)#新增一列,列名为cm

0 人点赞