我有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