I have the following data
X Y INFTIME
1 1 0
1 2 4
1 3 4
1 4 3
2 1 3
2 2 1
2 3 3
2 4 4
3 1 2
3 2 2
3 3 0
3 4 2
4 1 4
4 2 3
4 3 3
4 4 0
X and Y represent he X and Y components in the square grid of 4 by 4.
Here I want to sample randomly 10% from the population which are infected i.e, whose INFTIME is non zero. I did not get any idea of coding so could not start it.
Any suggestions and idea will be great for me.
Thanks
EDIT:
DO T = 1,10
DO i = 1, 625
IF(INFTIME(i)/=0 .AND. INFTIME(i) .LE. T)THEN
CALL RANDOM_NUMBER(u(i))
u(i) = 1+aint(u(i)*25)
CALL RANDOM_NUMBER(v(i))
v(i) = 1+aint(v(i)*25)
CALL RANDOM_NUMBER(w(i))
w(i) = 1+aint(w(i)*10)
ENDIF
ENDDO
ENDDO
do p = 1,625
WRITE(*,*) u(p),v(p),w(p)
enddo
This is my code what I tried but it only gives the random numbers, not the connection to the data. I used the data of 25 by 25 grids i.e, 625 individuals and time of infection 1 to 10
Follow what ja72 said. You have three 1D arrays of the same size (16). All you need to do is pick a number between 1 and 16, check to see if INFTIME is zero and accept the value as needed, then repeat until you’ve taken 10% of the samples (which would be 1.6 values, so I presume you’d just take 2? Or do you have more data than this 4×4 you presented?)
Edit You need to call the random number generator before the
ifstatement:The call
ind=1+int(625*rand(seed))will pick a random integer between 1 (whenrand(seed)=0) and 625 (whenrand(seed)=1). Then you can do what you need if theifstatement is satisfied.EDIT: program epimatrix
EDIT 2
I’ve adjusted the program to fix some of the issues. I’ve tried keeping my edits in lowercase so that you can see the difference. The
do-whileloop allows the code to continue running until the conditionmy_cnt.le.63has been met (which means you have 63 lines of X, Y, inftime per T). I’ve added a line to output T and another line to add a space so that the data might be more clear when looking at the output.This should take care of all the issues you’ve been running into. If not, I’ll keep checking this page.