追加后变量名的不同情况

Different cases of variable name after append

我已将多个文件附加到单个 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 {

}

我如何为本质上相同但存在大小写问题的所有变量编写此程序?

假设您有 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 的引用将被解释为对变量或标量的引用,否则。但是真的不清楚为什么缺失值的数量是 material。如果我有 42 个观察值,那么 append 66 个,结果应该与相反的结果相同。

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

clear
save output, emptyok replace

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