楼主: xingzhaoh
22917 19

[问答] 如何每隔5行求取一次最大值和平均数 [推广有奖]

副教授

20%

还不是VIP/贵宾

-

威望
0
论坛币
3407 个
通用积分
13.9638
学术水平
5 点
热心指数
6 点
信用等级
3 点
经验
583 点
帖子
421
精华
0
在线时间
703 小时
注册时间
2011-9-14
最后登录
2023-11-17

楼主
xingzhaoh 发表于 2013-7-10 10:44:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
附件11中有3000多行数据,如何每隔5行求取一次最大值和平均数?
也就是获得600多的最大值和平均数?
希望得到您的指点
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:平均数 最大值 如何 平均数 最大值

回帖推荐

BG4IMP 发表于16楼  查看完整内容

初学R,试试我的基础方法: df=data.frame(x) n=1:dim(df)[1] df$m=n%%5+1 最大值: dfmax=aggregate(df[,1:4],by=list(df$m),max) 平均值: dfmean=aggregate(df,by=list(df$m),mean)

qoiqpwqr 发表于6楼  查看完整内容

假设数据里面正好有3000行数,存为x(确保x是一个vector,而不是data.frame) y

qoiqpwqr 发表于2楼  查看完整内容

把你的数据读入后变成一个5列的矩阵。第一行就是1-5的数,第二行就是6-10的数,。。。 然后就可以用apply(x, 1, max)和apply(x, 1, mean)来求每行的最大值和平均数了

沙发
qoiqpwqr 发表于 2013-7-10 11:15:45
把你的数据读入后变成一个5列的矩阵。第一行就是1-5的数,第二行就是6-10的数,。。。

然后就可以用apply(x, 1, max)和apply(x, 1, mean)来求每行的最大值和平均数了
已有 1 人评分学术水平 收起 理由
李会超 + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

藤椅
rockaby 发表于 2013-7-10 11:28:15
飘过.....
世上没有人看重你的自尊,人们看重的只是你的成就!

板凳
xingzhaoh 发表于 2013-7-10 16:16:10
qoiqpwqr 发表于 2013-7-10 11:15
把你的数据读入后变成一个5列的矩阵。第一行就是1-5的数,第二行就是6-10的数,。。。

然后就可以用appl ...
能把code给我吗,谢谢

报纸
xingzhaoh 发表于 2013-7-11 08:23:53
能说的再详细点不

地板
qoiqpwqr 发表于 2013-7-11 08:46:39
假设数据里面正好有3000行数,存为x(确保x是一个vector,而不是data.frame)

y <- matrix(x, ncol = 5, byrow = TRUE)

来得到一个600行5列的矩阵。这个矩阵的第一行是x的第一到第五个数,第二行是x的第六到第十个数,以此类推

apply(y, 1, mean) 来得到每一行的平均值
apply(y, 1, max) 来得到每一行的最大值

注意如果原来的行数不是5的整倍数,要稍微注意一下。可以先去掉多余的几个数做上面的运算,然后单独算这几个数的平均值和最大值。

7
xingzhaoh 发表于 2013-7-11 14:03:01
qoiqpwqr 发表于 2013-7-11 08:46
假设数据里面正好有3000行数,存为x(确保x是一个vector,而不是data.frame)

y
谢谢大侠:
我使用了你说额方法
apply(y, 1, mean) 来得到每一行的平均值
apply(y, 1, max) 来得到每一行的最大值
现在想问怎么样可以一次计算出这600行的最大值和平均值,并保存起来,一个一个计算太慢了

8
童小军 发表于 2013-7-11 21:48:29
xingzhaoh 发表于 2013-7-11 14:03
谢谢大侠:
我使用了你说额方法
apply(y, 1, mean) 来得到每一行的平均值
这应该一次性就可以计算了啊,不需要一次次计算的啊。

9
ryusukekenji 发表于 2013-7-11 22:54:57
  1. # 例子,三千行数据
  2. x <- data.frame(no=rep(1:600,each=5), v=sample(1:10,3000, replace=T))
  3. by(x$v, x$no, mean) #每五行中的平均数
  4. by(x$v, x$no, max) #每五行中的最大数
复制代码

10
cheetahfly 在职认证  发表于 2015-9-9 10:28:14
R语言自带rollapply()函数可以达到你的要求,
比如:
在Clifford S. Ang的著作《Analyzing Financial Data and Implementing Financial Models Using R》中,就举了下列例子:
rollapply(AMZN.bb$AMZN.Close,width=20,FUN=sd,fill=NA)
来求估价布林均线的移动标准差,
你所想达到的目标应该可以用:
rollapply(a,width=5,FUN=mean,fill=NA)
完成

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 10:50