Fortran Coder

查看: 9739|回复: 2
打印 上一主题 下一主题

[数值问题] 数据分类问题求助

[复制链接]

8

帖子

4

主题

0

精华

入门

F 币
59 元
贡献
33 点
跳转到指定楼层
楼主
发表于 2015-2-6 13:44:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我有525个以站点命名的文件,每一个文件里是该站点从1961-2013年的数据,像下面的格式,第5列是年份:
       50353        5143       12639        1774        1961         -20
       50353        5143       12639        1774        1962         -14
       50353        5143       12639        1774        1963          -7
       50353        5143       12639        1774        1964         -24
我想把525个文件中同一年的数据写出来保存在以年份命名的文件里,比如1961年的525个站点的数据写在一个文件里,一直到2013年。
我把站点号和年份分别写在txt中,用来批量读取和写数据

program main
  implicit none
  character*5 filename
  character*4 filename1

open(10, file = "D:\a\year.txt")
  do i = 1, 53
      read(10, *) filename1
      open(11, file = "D:\c\"//filename1//".txt")
这一部分是准备写入数据的53个年份的文件。

open(12, file = "D:\a\tem.txt")
do j = 1 , 525
          read(12, *) filename
          open(13, file = "D:\a\"//filename//".txt")
          do k = 1, 53
这一部分是批量打开525个文件,k是文件里数据的行数53行。

如何把同一年份的数据写在一个文件里呢,请高手指点。

2.png (4.98 KB, 下载次数: 353)

2.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

8

帖子

4

主题

0

精华

入门

F 币
59 元
贡献
33 点
沙发
 楼主| 发表于 2015-2-6 16:06:04 | 只看该作者
[Fortran] 纯文本查看 复制代码
program main
  implicit none
  character*5 filename
  character*4 filename1
  integer :: i,k,j,q
  integer :: a(6)
  
  do q = 1961, 2013
  open(10, file = "D:\a\year.txt")
      do i = 1, 53
          read(10, *) filename1 
          open(11, file = "D:\c\"//filename1//".txt")
          open(12, file = "D:\a\tem.txt")
          do j = 1, 525
              read(12, *) filename
              open(13, file = "D:\a\"//filename//".txt")
              do k = 1, 53
                  read (13, *) a(1:6)
                  if (a(5) == q) then
                      write(11,*) a(1:6)
                      exit
                  end if
              end do
          end do
          close(13)
          close(12)
      end do
      close(11)
      close(10)
  end do
end

     我这样写代码,然后就是不停的写,然后被替换,到最后只留下2013年的数据,这的哪里需要改一下呢?

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2015-2-7 10:26:39 | 只看该作者
[Fortran] 纯文本查看 复制代码
Program Www_fcode_cn
  Implicit None
  Character *5 Filename
  Character *4 Filename1
  Integer :: I, J
  Integer :: A(6)
  Open (10, File='D:\a\year.txt')
  Do J = 1961, 2013
    Read (10, *) Filename1
    Open (J, File='D:\c\'//Filename1//'.txt') !// 11 改为 j
  End Do
  Open (12, File='D:\a\tem.txt')
  Do I = 1, 525
    Read (12, *) Filename
    Open (13, File='D:\a\'//Filename//'.txt')
    Do J = 1961, 2013
      Read (13, *) A(:)
      Write (A(5), *) A(:)
    End Do
    Close (13)
  End Do
  Close (12)
  Do J = 1961, 2013
    Close (J)
  End Do
  Close (10)
End Program Www_fcode_cn
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 02:23

Powered by Tencent X3.4

© 2013-2024 Tencent

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