追加后变量名的不同情况

时间:2018-12-04 07:33:40

标签: stata stata-macros

我已将多个文件附加到单个sSata数据集中。现在,它具有335个变量名。某些变量名称具有大小写问题,例如almirahALMIRAH存储来自不同数据集的相同信息。

我将这些变量一一替换:

count if mi(almirah)
local first=r(N)

count if mi(ALMIRAH)
local sec=r(N)

if first<sec {
    replace almirah=ALMIRAH if mi(almirah)
}
else {

}

我该如何对本质上是相同变量但具有类似大小写问题的所有变量进行编程?

2 个答案:

答案 0 :(得分:1)

假设您有frog toad newtFROG TOAD NEWT。让我们确定小写名称的变量是确定的。因此,将其中一些或全部循环可能会有所帮助。

foreach v in frog toad newt { 
    local V = upper("`v'") 
    generate `v'2 = cond(missing(`v'), `V', `v') 
    display  
}

我在那里创建了一个新变量,因为可能还有其他问题。如果有的话,覆盖您的数据可能会使它们模糊不清。

注意:在您的代码段中,至少需要

 if `first' < `sec'

使其合法,因为对firstsec的引用将被解释为对变量或标量的引用。但是,实际上还不清楚为什么缺失值的数量根本不重要。如果我有42个观测值,则另外append 66个观测值,其结果应该与反之亦然。

答案 1 :(得分:1)

根据您的描述,我认为对您来说不错的选择是在附加数据之前降低所有变量的名称。如果这个猜测是正确的,则下面的代码可能会给您提示。

clear
save output, emptyok replace

foreach file in file1 file2 file3 file4 {
    use `file', clear
    ren *, lower
    append using output
    save output, replace
}