爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5189|回复: 10

[求助] 数据文件含“NA”,NA出现的位置不确定,且数据值长度不一样,如何读取

[复制链接]

新浪微博达人勋

发表于 2013-11-25 11:19:33 | 显示全部楼层 |阅读模式

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

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

x
现在有系统出的多个数据文件(一个文件含多要素),里面含“NA”,NA出现的位置不确定,数据值的长度也不一样,共同点就是有小数的话,后面保留5位,该如何读取呢?
我要把多个这样的文件按着要素求平均,我有想过都按着字符串读取,但是长度不一样,就不知道该怎么定义len
请问大家有没有好点的方法推荐?

数据

数据


file:///C:\Users\lenovo\AppData\Roaming\Tencent\Users\493149241\QQ\WinTemp\RichOle\FZ1T~GT%(`CKBZA_%HOFHSE.jpg

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-11-25 13:47:27 | 显示全部楼层
有个比较笨的办法,就是逐字符的判断是否是空格,如果不是,和上一次读取的字符进行拼接,如果是,前面拼接好的字符串作为一个值,判断一下是否为NA,如果是,赋值为缺测,如果不是,赋值为实际值,用内部文件的方式将字符变量写为real变量。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-25 14:00:26 | 显示全部楼层
楼上说的对。
我觉得如果你的数据文件不多,可以考虑在excel中导入数据,然后输出为csv格式的。这样直接读应该可以吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-25 14:09:41 | 显示全部楼层

感谢你的回答!
但是我对于“用内部文件的方式将字符变量写为real变量”这句话不太懂,怎么叫做用内部文件?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-25 14:11:17 | 显示全部楼层
lqouc 发表于 2013-11-25 14:00
楼上说的对。
我觉得如果你的数据文件不多,可以考虑在excel中导入数据,然后输出为csv格式的。这样直接读 ...

我有几千个文件。。。所以很麻烦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-25 15:20:33 | 显示全部楼层
看你的截图里每个数值也都是分开放的啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-25 15:50:59 | 显示全部楼层
如果LZ会用sed或awk的话,可以考虑把NA替换为一个缺测值(如99999),然后再用fortran读取数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-25 17:14:59 | 显示全部楼层
雪花纷飞 发表于 2013-11-25 15:50
如果LZ会用sed或awk的话,可以考虑把NA替换为一个缺测值(如99999),然后再用fortran读取数据

恩,谢谢,这也是一个方法
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-11-25 20:16:42 | 显示全部楼层
dididada 发表于 2013-11-25 14:09
感谢你的回答!
但是我对于“用内部文件的方式将字符变量写为real变量”这句话不太懂,怎么叫做用内部文 ...

见9楼。
但是不建议用*的方式,最好自己设置输入格式  你没听过这个词儿说明还要继续多多看书!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-25 18:10:01 | 显示全部楼层
如果a是字符串,要转换成实数b,可以用下面的程序
a="1234"
read(a,*) b
write(*,*) b
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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