重命名具有非法字符 Stata 的变量

Rename variables with illegal character Stata

我有很多变量,它们的名称以 I: 开头,后跟数字 n(例如 I:2390)。这些是指标变量,观察值为 1 n。我从其他软件 (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中解决这个问题,还是需要使用其他软件?

我无法制作变量名包含冒号的示例数据。 尝试:

  1. 导出为 csv

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

  3. 导入回 Stata。

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

foreach varname of varlist * {

local i = `i' + 1

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

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