You need to have a trigger to do what you want to do reliably - or keep a manual list as macguba suggested, but that would be a pain and would need to be kept up to date as you make changes to the mission. You can delete the trigger after it is used if that is what is bothering you.
Note that:
1. an occupied vehicle will count as one - irrespective of how many two legged units are inside the vehicle
2. an unoccupied vehicle will be recognised as being a civilian unit.
There are work arounds to both of these.
EDIT:
Okay I have a bit more time now. Here are the work arounds:
1. To create a list of all the two legged East units on the map:- create a trigger that covers the map
Name: trigAllEast
Activation: East Present
On Activation: [] exec "listEast.sqs"
The code for listEast.sqs is:
_vehListE = list trigAllEast
East_loons = []
{{if (alive _x) then {East_loons = East_loons + [_x]}} forEach crew _x} forEach _vehListE
deleteVehicle trigAllEast
East_loons will then be an array of all of the two legged East units even if they are inside vehicles. I leave the creation of West_loons and Res_loons as an exercise for the reader
2. To create a list of two legged civilian units (NB ignoring empty vehicles that are also treated as civilians). Do exactly the same as in 1. above except make all the obvious changes from East units to Civillian units (trigger name = trigAllCivil, activated on Civilans present etc.) except the script listCivil.sqs (or whatever you call it) should be:
_vehListC = list trigAllCivil
Civi_loons = []
;NB empty units are treated as Civilian
{{if ((alive _x) and ("man" counttype [_x] > 0)) then {Civi_loons = Civi_loons + [_x]}} forEach crew _x} forEach _vehListC
deleteVehicle trigAllCivil
All the above could be put into one script and even activiated using only one trigger, but I am showing you how to do it small steps to make it more easily understandable.