Fortran Coder

标题: 数据分类问题求助 [打印本页]

作者: gercibee    时间: 2015-2-6 13:44
标题: 数据分类问题求助
我有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, 下载次数: 287)

2.png

作者: gercibee    时间: 2015-2-6 16:06
[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年的数据,这的哪里需要改一下呢?
作者: fcode    时间: 2015-2-7 10:26
[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





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2