爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7024|回复: 11

[求助] fortran处理缺测数据

[复制链接]

新浪微博达人勋

发表于 2016-5-25 17:32:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
现在在计算距平值,但是在我的变量里面有32766缺测值,想32766不参与计算,其他变量做距平计算,但是想保留32766在txt中的值不变。现在自己编了程序,但是32766并没有保留到原数据中不变,想请教高手怎么处理比较好。附上我的程序和txt格式 QQ图片20160525173228.png
!功能:求出156个站点的20时降水的距平值,
program main
implicit none
integer,parameter::n=3140124,state_num=156        
integer state(n),year(n),statename(state_num),mon(n),day(n)
real var(n),ave(state_num),juping(n)
integer i,k,h
open(30,file="F:\work\scrain\R95p\3\out2.txt")      
do i=1,n
read(30,*)state(i),year(i),mon(i),day(i),var(i)
!print*,var(i)
end do
close(30)
!print*,'1'
open(40,file="F:\work\scrain\R95p\3\statename.txt")
do h=1,state_num
read(40,*)statename(h)
!print*,state_name(i)
end do
close(40)
open(50,file="ave.txt")
do h=1,state_num
read(50,*)ave(h)
!print*,ave(i)
end do
close(50)

!*****************************************
open(70,file="F:\work\scrain\R95p\3\juping2.txt")
do h=1,state_num
    do i=1,n
           if(statename(h)==state(i))then
         if(var(i)/=32766)then
      juping(i)=var(i)-ave(h)  
      write(70,*)state(i),year(i),mon(i),day(i),juping(i)
      else if(var(i)==32766)then
             write(70,*)state(i),year(i),mon(i),day(i),var(i)
            end if
    end if
end do
enddo
close(70)
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-25 19:24:27 | 显示全部楼层
赞!!!!!!!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-5-25 22:01:21 | 显示全部楼层
还是不能明白你到底要干什么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-26 00:49:32 | 显示全部楼层
图是啥?原始数据么?32766没有保留那么变成了什么?
关键信息都要给出来啊,不要光放程序,话说你的程序效率好低。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-5-26 08:53:40 | 显示全部楼层
lqouc 发表于 2016-5-26 00:49
图是啥?原始数据么?32766没有保留那么变成了什么?
关键信息都要给出来啊,不要光放程序,话说你的程序 ...

图是原始数据,32766也被替换成距平值了,只有每个站最后一年2015年的最后一个值变成了32766,应该是程序有错,我是想保留原数据32766不做距平运算,其他变量值做运算
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-5-26 08:55:06 | 显示全部楼层
霹雳电光鼠 发表于 2016-5-25 22:01
还是不能明白你到底要干什么

变量32766不参与距平运算,其他变量参与,想在最后输出保留32766以及其他变量的距平值,现在程序只能计算变量的距平值,32766还是参与了计算
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-26 09:36:03 | 显示全部楼层
那干脆直接把数据读进,用ncl 的一个函数就解决了,nc默认不计算缺测
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-5-26 10:08:23 | 显示全部楼层
Juliustan 发表于 2016-5-26 09:36
那干脆直接把数据读进,用ncl 的一个函数就解决了,nc默认不计算缺测

太谢谢您的解答,但是自己不会用ncl
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-26 12:00:51 | 显示全部楼层
自由行 发表于 2016-5-26 08:53
图是原始数据,32766也被替换成距平值了,只有每个站最后一年2015年的最后一个值变成了32766,应该是程序 ...

原始数据也没看见缺测值,结果里的缺测到底变成了什么也看不到,单从程序看感觉没问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-30 10:29:59 | 显示全部楼层
建议楼主把原数据或数据样例给出,楼主给出的信息不足,大家很难能提出解决方法
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表