全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
1718 3
2012-07-27
我在用工业企业数据库的时候要调整02年前后行业代码的口径,故写了下面这一段,其中矩阵A是调整口径,第一列是调整后的,第二列是2003年的,第三列是2002年的,太长了只截取了一部分;year是年份;xxcic是行业代码。附上一个小样本,报错不知错在哪,望指教,谢谢!



#delimit ;
mat in A =
(1310,1310,1312\
2221,2221,2221\
2222,2222,2223\
2223,2223,2224\
2231,2231,2230\
2231,2239,2230\
2311,2311,2311\
2312,2312,2413\
2319,2319,2312\
2320,2320,2319\
2330,2330,2320\
2411,2414,2411\
2411,2411,2411\
2412,2412,2415\
2413,2413,2417\
2419,2419,2419\
2421,2421,2421\
2422,3753,2423\
2422,2422,2423\
2423,2429,2859\
2423,2424,2429\
2423,2429,2429\
2423,2423,2429\
2431,2431,2431\
2432,2432,2433\
2433,2433,2435\
2439,2439,2439\
2440,2440,2440\
2451,2451,2450\
2452,2452,2490\
2511,2511,2520\
2511,2511,2530\
2512,2512,2510\
2520,2520,2570\
2530,3353,3387\
2619,2669,2619\
2619,2619,2619\
2619,2666,2619\
2621,2621,2621\
2622,2622,2622\\
2642,2642,2653\
2643,2643,2654\
4222,4222,4357\
4229,4229,4355\
4310,4320,6290\
4310,4310,6290);

#delimit cr
local i = 1
while `i' <= _N{
    if year[`i'] <= 2002{
      local j = 1
      while `j' <= rowsof(A){      
        if xxcic[`i'] == A[`j',3]{
          replace xxcic[`i'] = A[`j',1]
        }
        else{
          `j++'
        }
      }
    }
    else{
      local j = 1
      while `j' < rowsof(A){
        if xxcic[`i'] == A[`j',2]{
          replace xxcic[`i'] = A[`j',1]
        }
        else{
          `j++'
        }
      }   
    }
  }
  dis `i'
  `i++'
}
附件: 您需要登录才可以下载或查看附件。没有帐号?我要注册
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-27 23:31:55
调整的具体思路是什么?还请描述的详细一些。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-28 00:00:48
就是说自己定了一个标准(矩阵A的第一列),把2002年及以前的一个标准(矩阵A的第三列)和把2002年以后的一个标准(矩阵A的第二列)调整到我订的标准上。  工业企业数据库中的数据都按这个规则弄。这种程序经常用但是一直没编成,谢谢指导!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-30 18:04:02
不需要定义矩阵 A,只需把那三列数存成三个变量,分别为 sic sic02 sic03,然后执行如下命令即可:
replace sic02 = sic
replace sic03 = sic
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群