У меня есть одна таблица, которая содержит ежемесячный профиль для каждой из некоторых европейских стран:
coun_ID, M1, M2, M3 M4...M12
Например, Monthly.txt выглядит следующим образом:
coun_ID M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12
1 0.111453304 0.103129682 0.093224571 0.090228067 0.075162311 0.063758948 0.059930082 0.057682704 0.064841019 0.081155319 0.09414017 0.105293824
2 0.091037697 0.093450944 0.079221103 0.077223933 0.079137888 0.08329866 0.070899559 0.060996921 0.077223933 0.095780977 0.101522843 0.090205542
3 0.167259786 0.185549946 0.154266325 0.099892411 0.048166846 0.031200861 0.017297029 0.01555905 0.020690226 0.047918563 0.080857403 0.131341554
...
...
etc.
У меня также есть таблица (values.txt), которая содержит следующие значения:
ID coun_id value
1 1 633546.2138
2 1 2378960.921
3 1 4490715.693
4 2 1676472.311
5 2 778063.0026
6 1 12979.51759
7 1 1723.502754
8 3 16.4434473
9 3 190.4572685
10 3 204319.6438
...
...
etc.
Я хочу умножить «значение» из файла values.txt на месячные коэффициенты (M1, M2 ... M12) на основе count_id и записать результаты в выходной файл (output.txt). Таким образом, результат будет выглядеть так:
ID coun_id value M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12
1 1 633546.2138 70610.81876 65337.41956 59062.07399 57163.65023 47618.79755 40394.2401 37968.47654 36544.65872 41079.78209 51415.64508 59642.14827 66708.50353
2 1 2378960.921 265143.0547 245341.4833 221777.6113 214649.0454 178808.2006 151680.0457 142571.3231 137224.8986 154254.2503 193065.3324 223955.7855 250489.8925
3 1 4490715.693 500505.1013 463126.0814 418645.044 405188.5964 337532.5695 286323.3084 269128.9597 259036.6241 291182.5816 364445.4646 422756.7388 472844.6278
4 2 1676472.311 152622.1783 156667.9201 132811.9856 129463.7854 132672.478 139647.897 118861.1475 102259.6491 129463.7854 160574.1559 170200.2352 151227.0935
5 2 778063.0026 70833.06388 72710.72208 61639.00927 60085.08518 61574.26276 64811.60551 55164.32376 47459.4475 60085.08518 74523.63456 78991.16806 70185.59486
..
...
etc.
Я хочу использовать Фортран 90.
Я использую следующий код fortran90 для чтения входных файлов:
character*3 :: coun
character*500 :: header,fname,file,output,rundir
integer :: ncellmax,ncell,write_ncell,&
coun_id,coun_id2,counid,write_coun, &
month,snap,start_snap,end_snap
real :: value, mo(12)
real, allocatable, dimension(:,:) :: value_vct
real, allocatable, dimension(:) :: vct_counid
allocate vct_counid(89)
allocate vct_month(89,12)
allocate value_vct(ncellmax,89)
ncellmax=100000
Open (13,file=rundir(1:len_trim(rundir))//'user_input/Monthly.txt')
read (13,*) header
do coun_id=1,89
read (13,*) counid,mo(1),mo(2),mo(3),mo(4),mo(5),mo(6),mo(7),mo(8),mo(9),mo(10),mo(11),mo(12)
vct_counid(coun_id)=counid
do month=1,12
vct_month(coun_id,month)=mo(month)
enddo
enddo
Open (14,file=rundir(1:len_trim(rundir))//‘values.txt')
do ncell=1,ncellmax
read(100,*) id,coun_id2,value
do coun_id=1,89
value_vct(ncell,coun_id2)=value
enddo
enddo!for all ncells
Как мне поступить, чтобы умножить таблицы, включая также выражение "где", чтобы умножить их, где coun_id(from months.txt)
равно coun_id2
(из values.txt
), а затем записать выходные данные в файл