doreenjiao 发表于 2010-9-8 17:18 
需要计算:c1*c4+c2*c5+c3*c6 (如果没有匹配的就忽略,如c7,而且数据能够保证如果存在的话对应是一一的)
*没明白红线部分,姑且认为不作处理, 如果b为string
*试试
reshape wide c,i(a) j(b) string
sum a
loca lm=r(max)
matr x=J(`lm',`lm',0)
forvalue i=1/`lm' {
forvalue j=1/`lm' {
if `i'~=`j'{ //对于a列中任何两个观测值,如果包含相同,则去掉该条件
foreach vnm of varlist c* {
if `vnm'[`i']~=. & `vnm'[`j']~=.{
mat x[`i',`j']=`vnm'[`i']*`vnm'[`j']+x[`i',`j']
}
}
}
}
}
matlist x
*等于0视为不合条件
*有一种情况没有考虑:真正的积和等于0