使用非法字符Stata重命名变量

时间:2015-12-07 23:49:33

标签: stata

我有很多变量,其名称以I:开头,后跟数字 n (如I:2390)。这些是指标变量,观察值 n 的值为1。我从其他软件(Oxmetrics)导入了这个数据库,因此它们不是在Stata中创建的。根据Stata手册,变量名只允许使用字母,数字和_。因此,Stata不允许在名称中使用字符:。因此,我无法对它们进行回归(输出为I ambiguous abbreviation r(111);)。

我试图将它们全部重命名,但到目前为止没有任何作用,可能是因为名称无效。例如,我试过:

rename I:2390 OUT2390

rename I# OUT#

replace I:2390 = subinstr(I:2390, "I:", "OUT", .)

输出与以前相同:I ambiguous abbreviation r(111);

以下是describe的输出,与有问题的特定变量相关:

I:7             double                        
I:32            double                        
I:41            double                        
I:77            double                        
I:173           double                        
I:221           double                        
I:264           double                        
I:297           double                        
I:977           double                        
I:980           double                        
I:1026          double                        
I:1232          double                        
I:1282          double                        
I:1288          double                        
I:1347          double                        
I:1429          double                        
I:1455          double                        
I:1508          double                        
I:1536          double                        
I:1709          double                        
I:1774          double                        
I:1805          double                        
I:1836          double                        
I:1851          double                        
I:1873          double                        
I:1918          double                        
I:1967          double                        
I:1980          double                        
I:2016          double                        
I:2020          double                        
I:2108          double                        
I:2109+I:2108   double                        
I:2128          double                        
I:2164          double                        
I:2173          double                        
I:2256          double                        
I:2286          double                        
I:2332          double                        
I:2345          double                        
I:3109+I:3108   double                        
I:3151          double                        
I:3211          double                        
I:3250          double                        
I:3582          double                        
I:3596          double                        
I:3604          double                        
I:3636          double                        
I:3656          double                        
I:3716          double                        
I:3718          double                        
I:3760          double                        
I:4139          double                        
I:4164          double                        
I:4172          double                        
I:4230          double                        
I:4257          double                        
I:4263          double                        
I:4282          double                        
I:4288          double                        
I:4316          double                        
I:4317-I:4316   double                        
I:4346          double                        
I:4358          double                        
I:4445          double                        
I:4644          double                        
I:4645+I:4644   double                        
I:4657          double                        
I:4679          double                        
I:4705          double                        
I:4720          double                        
I:4866          double                        
I:4899          double                        
I:4923          double                        
I:5329          double                        
I:5423          double                        
I:5717          double                        
I:5731          double                        
I:5776          double                        
I:5960          double                        
I:6103          double                        
I:6117          double                        
I:6130          double                        
I:6178          double                        
I:6182          double                        
I:6341          double                        
I:6424          double                        
I:6435          double                        
I:6441          double                        
I:6470          double                        
I:6555          double                        
I:6567          double                        
I:6668          double                        
I:6695          double                        
I:6878          double                        
I:7341          double                        
I:7349          double                        
I:7370          double                        
I:7374          double                        
I:7419          double                        
I:7449          double                        
I:7555          double                        
I:7574          double                        
I:7719          double                        
I:7723          double                        
I:7729          double                        
I:7746          double                        

有没有办法在Stata中解决这个问题,还是需要使用其他软件?

2 个答案:

答案 0 :(得分:0)

我不能使用包含冒号的变量名来制作样本数据。 试试:

  1. 导出到csv

    outsheet using EXPORTED_FILE.csv
    
  2. 在文本编辑器中修改变量名称

  3. 导回Stata。

答案 1 :(得分:0)

先前解决方案的问题(导出为.csv)是您可能会丢失变量的标签。可能的解决方案是使用以下代码用下划线替换变量名称中的所有非法字符:

foreach varname of varlist * {

local i = `i' + 1

if ( "`varname'" != ustrtoname("`varname'") ) {

    mata : st_varrename(`i', ustrtoname("`varname'") )
   }
}