从文件中读取和汇总列

时间:2016-01-25 00:05:25

标签: sum fortran

我有2个表,其中包含2列(id,value)。所有表都具有相同的行数(id)。所以,我想对每个id的所有表中的列value求和。

任何人都可以帮助我如何使用Fortran做到这一点? 请在下面找到我写的代码的一部分,但在第19行,它没有正确估计求和。

integer :: id,idmax,nf,files,write_id
real, allocatable, dimension(:) :: val,vct_val,sum_files
idmax=5
nfiles=2
allocate (vct_val(idmax))
allocate(val(nfiles))
allocate (sum_files(idmax))
nf=0 !nf is the number of the file
do nf = 1,nfiles  
  open(10,file=fname_daily)    
   do id=1, idmax
    read(10,'(i6,1x,f16.2)') write_id,val(nf)
    vct_val(id)=val(nf)
 print *, 'read file ', write_id, vct_val(id), val(nf)
  end do !for all rows(id)
enddo !for all nfiles
do id=1, idmax
  print *, 'file1 sum', write_id, val(1)
  print *, 'file2 sum', write_id, val(2)
  sum_files(id)=val(1)+val(2)
end do !for all rows(id)

write(20,'(i6,A,f20.2)') (write_id, tab, sum_files(write_id),  write_id=1, idmax)

在下文中,您可以找到文件1和文件2的示例,我想要对其列进行求和" value"每个身份证 的文件1
" ID" "值"

 1        51000.00  
 2      1612000.00  
 3      1520000.00  
 4      1520000.00  
 5      1134000.00  

file2的
" ID" "值"

 1     35740000.00
 2     24460000.00
 3     21800000.00
 4     54280000.00
 5     42530000.00

第一次打印(第14行)给出以下正确值:

 read file            1   51000.0000       51000.0000    
 read file            2   1612000.00       1612000.00    
 read file            3   1520000.00       1520000.00    
 read file            4   1520000.00       1520000.00    
 read file            5   1134000.00       1134000.00    
 read file            1   35740000.0       35740000.0    
 read file            2   24460000.0       24460000.0    
 read file            3   21800000.0       21800000.0    
 read file            4   54280000.0       54280000.0    
 read file            5   42530000.0       42530000.0

但是,第二次打印(第18行)仅给出id 5的值:

 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0    
 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0    
 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0    
 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0    
 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0    
 file1 sum           5   1134000.00    
 file2 sum           5   42530000.0 

0 个答案:

没有答案