R语言中apply和tapply怎么用
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容介绍了"R语言中apply和tapply怎么用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2025年01月23日R语言中apply和tapply怎么用
本篇内容介绍了"R语言中apply和tapply怎么用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、apply()函数
apply函数可将一个任意函数"应用"到矩阵、数组、数据框的任何维度上。使用格式如下:
apply(x, MARGIN, FUN, ...)
其中x为数据对象,MARGIN是维度的下标,FUN是由你指定的函数,而...则包括了任何想传递给FUN的参数。在矩阵或数据框中, MARGIN=1表示行, MARGIN=2表示列。
示例如下:
set.seed(100)mydata <- matrix(rnorm(30), nrow=6) #生成随机数mydata [,1] [,2] [,3] [,4] [,5][1,] -0.50219235 -0.58179068 -0.20163395 -0.9138142 -0.8143791[2,] 0.13153117 0.71453271 0.73984050 2.3102968 -0.4384506[3,] -0.07891709 -0.82525943 0.12337950 -0.4380900 -0.7202216[4,] 0.88678481 -0.35986213 -0.02931671 0.7640606 0.2309445[5,] 0.11697127 0.08988614 -0.38885425 0.2619613 -1.1577295[6,] 0.31863009 0.09627446 0.51085626 0.7734046 0.2470760
利用apply求均值
apply(mydata, 2, mean)[1] 0.1454680 -0.1443698 0.1257119 0.4596365 -0.4421267apply(mydata, 2, mean, trim=0.2) #去掉端值[1] 0.1220539 -0.1888731 0.1008213 0.3403341 -0.4355267
注:FUN可为任意R函数,这也包括你自行编写的函数。
二、tapply()函数
tapply()函数可根据因子、向量和要计算的函数计算,使用格式如下:
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
其中X通常是一向量;INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;FUN是需要计算的函数;simplify是逻辑变量,若取值为TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。
示例如下:
Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose",
"David Jones", "Janice Markhammer", "Cheryl Cushing",
"Reuven Ytzrhak", "Greg Knox", "Joel England",
"Mary Rayburn")
Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)
English <- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
roster <- data.frame(Student, Math, English,stringsAsFactors=FALSE)
roster$grade[roster$Math <= 500] <- "A"
roster$grade[roster$Math > 500] <- "B"
roster
Student Math English grade
John Davis 502 25 B
Angela Williams 600 22 B
Bullwinkle Moose 412 18 A
David Jones 358 15 A
Janice Markhammer 495 20 A
Cheryl Cushing 512 28 B
Reuven Ytzrhak 410 15 A
Greg Knox 625 30 B
Joel England 573 27 B
Mary Rayburn 522 18 B
1)应用前面的apply求数学和英语的平均分
apply(roster[,c(2,3)],2,mean)Math English 500.9 21.8
2)当需要分组计算时候,使用tapply函数
tapply(roster[,"English"], roster[,"grade"], mean) A B 17 25
注:当index不是因子时,可以用as.factor()把参数强制转换成因子
3)aggregate函数同样可以得到类似的结果:
aggregate(x=roster[c('English')], by = list(roster$grade), FUN=mean)
4)实现类似excel的透视表功能
attach(roster)tapply(English,list(Student,grade),mean) A BAngela Williams NA 22Bullwinkle Moose 18 NACheryl Cushing NA 28David Jones 15 NAGreg Knox NA 30Janice Markhammer 20 NAJoel England NA 27John Davis NA 25Mary Rayburn NA 18Reuven Ytzrhak 15 NA
"R语言中apply和tapply怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
函数
因子
对象
数据
语言
内容
参数
数组
更多
格式
知识
矩阵
示例
结果
维度
应用
实用
学有所成
接下来
下标
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中国虎符网络安全决赛
忻州java软件开发培训
鞋业软件开发
网络安全单位ip地址配置备案表
网络安全员读什么专业
潍坊博正网络技术
小米做软件开发加班吗
孝义蓝思网络技术有限公司
服务器主板能用多大cpu
容错服务器市场份额
数据库msdb丢失
什么是移动软件开发技术标准
投影仪出现连接服务器失败
网络技术培训合同模板
廊坊hr系统网络技术
软件开发年末总结
云南网络安全专题
网络安全宣传周班会内容三年级
手机怎么设置代理服务器
物流网络技术题
驾驶员网络安全教育管理
魔力风暴互联网科技
软件开发模型Jackson
网络安全主题创意绘画警察
青少年网络安全 问答题
数据库语局结果为空默认
黑龙江软件开发定制怎么样
WTO与网络安全
皓月云服务器
服务器1.5g多少人流量