楼主: tianjfield
2217 8

[问答] 问由日时序如何得到每个月均值序列 [推广有奖]

  • 1关注
  • 0粉丝

已卖:657份资源

本科生

50%

还不是VIP/贵宾

-

威望
0
论坛币
523 个
通用积分
0.8400
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
378 点
帖子
38
精华
0
在线时间
138 小时
注册时间
2010-1-3
最后登录
2024-4-10

楼主
tianjfield 发表于 2014-5-9 10:43:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问R如何实现:本是日数据,如何得到每个月各日的均值、最大最小值、中位数的时序,扩展问下如何得到周平均的?比如下面的数据(其他月份的没有贴上),谢谢。
  1. date                        x
  2. 2012-03-30        725139817505.87
  3. 2012-04-05        729655449329.30
  4. 2012-04-06        694624126632.18
  5. 2012-04-09        725491840676.78
  6. 2012-04-10        767643508433.72
  7. 2012-04-11        803585088338.68
  8. 2012-04-12        769980495566.86
  9. 2012-04-13        767036717147.57
  10. 2012-04-16        745187158148.88
  11. 2012-04-17        725367888055.81
  12. 2012-04-18        750652641689.95
  13. 2012-04-19        716668132168.68
  14. 2012-04-20        804835486055.37
  15. 2012-04-23        771078379171.57
  16. 2012-04-24        734325476793.48
  17. 2012-04-25        790755458598.57
  18. 2012-04-26        736355186545.68
  19. 2012-04-27        753850251877.38
  20. 2012-05-02        733344831949.48
  21. 2012-05-03        709555898489.23
  22. 2012-05-04        741951953300.30
  23. 2012-05-07        773690980383.94
  24. 2012-05-08        839702368495.67
  25. 2012-05-09        809386802679.22
  26. 2012-05-10        724900731539.27
  27. 2012-05-11        726257836131.24
  28. 2012-05-14        810160524945.60
  29. 2012-05-15        692755765228.76
  30. 2012-05-16        745035120222.17
  31. 2012-05-17        812464711776.11
  32. 2012-05-18        740786380977.76
  33. 2012-05-21        787284760289.99
  34. 2012-05-22        716344417792.69
  35. 2012-05-23        752071672333.75
  36. 2012-05-24        769793969498.23
  37. 2012-05-25        730290079517.45
  38. 2012-05-28        729834271309.32
  39. 2012-05-29        820519262824.94
  40. 2012-05-30        693288318208.72
  41. 2012-05-31        652141901313.74
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:如何实现 date 最小值 周平均 中位数 如何

沙发
magicsun 发表于 2014-5-9 11:01:54
前一个问题比较简单,直接选择月份,然后统计即可。后一个比较困难,因为有假期。没有假期的话,就相对容易。(每5个一周)
QQ群:476797410

藤椅
yywan0913 在职认证  发表于 2014-5-9 13:52:12
as.Date()
每个月每日?  有重复日么?   

周的话用weekdays()返回 星期一的  再加7   之间的


等下附下代码  供参考
是什么给了你自信

板凳
yywan0913 在职认证  发表于 2014-5-9 13:53:34
  1. 这楼还是删掉吧,太占位置了
复制代码
有点乱。。。
是什么给了你自信

报纸
tianjfield 发表于 2014-5-9 14:39:51
yywan0913 发表于 2014-5-9 13:53
as.Date()
每个月每日?  有重复日么?
谢谢。。。。。。。。。。。

地板
yywan0913 在职认证  发表于 2014-5-9 15:23:36
tianjfield 发表于 2014-5-9 14:39
谢谢。。。。。。。。。。。
  1. t=read.table("00",header=T)          #你的文件
  2. t[,1]=as.Date(t[,1])                                #转化成时间格式
  3. a=sort(unique(t[,1]))                              #uniq         
  4. r1=matrix(,nr=length(a),nc=5)                 #r1为第一个问题的结果,做成矩阵
  5. colnames(r1)=c("date","mean","max","min","median")      #列名
  6.   for(i in 1:length(a)){
  7.           r1[i,1]=as.character(a[i])
  8.           r1[i,2]=mean(t[,2][grep(a[i],t[,1])]);
  9.           r1[i,3]=max(t[,2][grep(a[i],t[,1])])
  10.           r1[i,4]=min(t[,2][grep(a[i],t[,1])])
  11.           r1[i,5]=median(t[,2][grep(a[i],t[,1])])
  12.   }
  13.   write.table(r1,"r1.txt",sep="\t",quote=F,row.names=F)


  14. w=which(weekdays(a)=="Monday")                        #对uniq挑选出星期一的,然后对每个星期一之间的日期做处理,下面的操作复杂了点,大概就是这个思路
  15. r2=matrix(,nr=length(w)+1,nc=2)                            #r2为每周的结果   ,表格第一列为每个周的名,
  16. colnames(r2)=c("weekdays","mean")
  17. r2[1,1]=paste(as.character(a[1]-7),"--",as.character(a[1]-1),sep="")
  18. p=c()
  19. for(k in 1:(w[1]-1)) {  p=c(p,t[,2][t[,1]==a[k]])}
  20. r2[1,2]= mean(p)

  21. r2[length(w)+1,1]=paste(as.character(a[length(w)]+1),"--",as.character(a[length(w)]+1+6),sep="")
  22. p=c()
  23. for(k in (length(w)+1):length(a)) {  p=c(p,t[,2][t[,1]==a[k]])}
  24. r2[length(w)+1,2]=mean(p)

  25. for(j in 1:(length(w)-1)){
  26.         r2[j+1,1]=paste(as.character(a[j]),"--",as.character(a[j]+6),sep="")
  27.     p=c()
  28.         for(k in w[j]:(w[j+1]-1)){
  29.         p=c(p,t[,2][t[,1]==a[k]])
  30.         }
  31.         r2[j+1,2]= mean(p)
  32. }
  33. write.table(r2,"r2.txt",sep="\t",row.names=F,quote=F)
复制代码
是什么给了你自信

7
yywan0913 在职认证  发表于 2014-5-9 15:25:41
  1. weekdays        mean
  2. 2012-03-23--2012-03-29  716473131155.783
  3. 2012-03-30--2012-04-05  766747530032.722
  4. 2012-04-05--2012-04-11  748542261223.738
  5. 2012-04-06--2012-04-12  746402179590.711
  6. 2012-04-09--2012-04-15  774787743845.868
  7. 2012-04-10--2012-04-16  760240500630.08
  8. 2012-04-11--2012-04-17  751156979886.422
  9. 2012-04-13--2012-04-19  751747737438.198
复制代码


周的结果
是什么给了你自信

8
tianjfield 发表于 2014-5-9 15:48:43
yywan0913 发表于 2014-5-9 15:25
周的结果
u r very kind,3x

9
yywan0913 在职认证  发表于 2014-5-9 17:20:38
  1. w=which(weekdays(a)=="Monday")
  2. r3=matrix(,nr=length(w)+1,nc=2)
  3. colnames(r3)=c("weekdays","mean")
  4. w=c(1,w,(length(a)+1))
  5. for(j in 1:(length(w)-1)){
  6.         if(j==1) {r3[1,1]=paste(as.character(a[2]-7),"--",as.character(a[2]-1),sep="") }else {r3[j,1]=paste(as.character(a[j]),"--",as.character(a[j]+6),sep="")}
  7.         r3[j,2]=mean(t[,2][which(t[,1] %in% a[w[j]:(w[j+1]-1)])])
  8. }
  9. write.table(r3,"r3.txt",sep="\t",row.names=F,quote=F)
复制代码


把算周的简化了很多  
是什么给了你自信

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 04:15