I am just imagining the scenario, but say you had a list of objects each having a list of properties in the same order, such as...
'(handle layer area perimeter).
Much as in the same way you would extract data from Excel, you would transpose the data into rows, with the first row being the headers. Let's give it the symbol name 'data...
(setq data '(
("handle" "layer" "area" "perimeter")
("1A13" "grass" 4010.24 602.45)
("1B15" "sand" 8723.22 1247.66)
;; etc.
))
(setq headers (car data))
To get all, but only, the perimeters...
(setq perimeters (mapcar '(lambda (x)(nth (vl-position "perimeter" headers) x))(cdr data)))
To get the sum of grass areas, you would use vl-remove-if-not to grab only the items with the "grass" layers and perform the same kind of mapcar contained within an (apply '+ <grass_items>)