77077 发表于 2014-8-7 11:25:48

按照自己的想法,参考大师的代码,自己写了一个,求大师批评,求大师精简~~~
(defun c:tt()
(setq lst1 '(("居住" "1431.05" "8586.30")
            ("居住" "1329.99" "7979.94")
            ("商业" "596.30" "1788.90")
            ("公共设施" "395.54" "791.08")
            ("其他" "365.70" "731.40")
            ("居住" "1311.85" "7871.10")
            ("居住" "1965.39" "11792.34")
            ("公共设施" "507.51" "1015.02")
            ("公共设施" "668.77" "1337.54")
            ("公共设施" "502.95" "1005.90")
            ("公共设施" "574.56" "1149.12")
            ("其他" "660.27" "1320.54")
            ))
(setq lstb '("居住" "宾馆饭店" "商业" "金融" "办公" "娱乐" "厂房" "公共设施" "其他")
      i 0
      len (length lstb)
      lst2 '()
      lst3 '()
      )
(repeat len
   (setq a (nth i lstb))
   (setq lsti (vl-remove nil (mapcar '(lambda(x) (if (member a x) (append x lst2)) ) lst1)))
       (setq lst3 (cons lsti lst3))
   (setq i (1+ i))
   )
(princ lst3)
(princ)
)

77077 发表于 2014-8-7 11:45:30

(mapcar'(lambda(n m)
(list
m
(rtos (apply '+ (mapcar '(lambda(x) (atof (cadr x))) n)) 2 2)
(rtos (apply '+ (mapcar '(lambda(x) (atof (caddr x))) n)) 2 2)
)
)
(reverse lst3)
lstb
)
我也计算出来了~嘿嘿~
(
("居住" "6038.28" "36229.68")
("宾馆饭店" "0.00" "0.00")
("商业" "596.30" "1788.90")
("金融" "0.00" "0.00")
("办公" "0.00" "0.00")
("娱乐" "0.00" "0.00")
("厂房" "0.00" "0.00")
("公共设施" "2649.33" "5298.66")
("其他" "1025.97" "2051.94")
)
页: 1 [2]
查看完整版本: 表数据分组统计的问题~