前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言函数

R语言函数

原创
作者头像
用户10803254
修改2023-12-19 21:47:39
2150
修改2023-12-19 21:47:39
举报

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.初级统计(R_01)
  • 2.有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
  • 3.连接——paste、paste0
  • 4.交集 并集 差集
  • 5.%in%
  • 6.向量筛选(取子集)——[]
  • 7.隐式循环——apply(R_04)
    • 7.2.lapply(list, FUN, …) —— 对列表/向量中的每个元素(向量)实施相同的操作
    • 8.两个数据框的连接
    • 9.插入值/删除值
    • 10.运算符号(向量元素个数不同时,循环补齐,长的向量元素个数必须是短的整数倍)
    • 11.分组
    • 12.提取字符串(substr/toupper/tolower)
    • 13.查找字符串(grep/match)
    • 14.取样(sample)
    • 15.t/rev
      • 16.scal
        • 17.分割字符串 strsplit
          • 18.修改数据框
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档