追加后变量名的不同情况
Different cases of variable name after append
我已将多个文件附加到单个 sSata 数据集中。它现在有 335
个变量名。一些变量名称存在大小写问题,例如 almirah
和 ALMIRAH
存储来自不同数据集的相同信息。
我将像这样一一替换这些变量:
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 newt
和 FROG TOAD NEWT
。让我们决定小写名称的变量是确定的。因此,包含其中部分或全部的循环可能会有所帮助。
foreach v in frog toad newt {
local V = upper("`v'")
generate `v'2 = cond(missing(`v'), `V', `v')
display
}
我在那里创建了一个新变量,因为可能还有其他问题。如果有,覆盖您的数据可能会掩盖它们的内容。
注意:在您的代码段中您至少需要
if `first' < `sec'
使其合法,因为对 first
和 sec
的引用将被解释为对变量或标量的引用,否则。但是真的不清楚为什么缺失值的数量是 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
}
我已将多个文件附加到单个 sSata 数据集中。它现在有 335
个变量名。一些变量名称存在大小写问题,例如 almirah
和 ALMIRAH
存储来自不同数据集的相同信息。
我将像这样一一替换这些变量:
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 newt
和 FROG TOAD NEWT
。让我们决定小写名称的变量是确定的。因此,包含其中部分或全部的循环可能会有所帮助。
foreach v in frog toad newt {
local V = upper("`v'")
generate `v'2 = cond(missing(`v'), `V', `v')
display
}
我在那里创建了一个新变量,因为可能还有其他问题。如果有,覆盖您的数据可能会掩盖它们的内容。
注意:在您的代码段中您至少需要
if `first' < `sec'
使其合法,因为对 first
和 sec
的引用将被解释为对变量或标量的引用,否则。但是真的不清楚为什么缺失值的数量是 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
}