我有许多数据集,其面板标识符是标记的整数。这些文件由几位共同作者和RA组成,所以我担心价值标签不一致,合并错误。例如,如果Firm ABC为1和11.数据为xtset
,因此不能将这些数据存储为字符串。
有没有办法检查给定变量,值标签在数据集中是否一致?手动检查的面板和数据集太多了。
这是我试图避免的一个玩具示例:
clear
tempfile f1
clear
input id
1
2
end
label define idlab 1 "One" 2 "Two"
lab val id idlab
save `f1'
clear
input id
1
2
end
label define idlab 1 "Three" 2 "Four"
lab val id idlab
merge 1:1 id using `f1', nogen
list, clean noobs
答案 0 :(得分:1)
我认为您可以使用value label
和label
macro extended functions来验证数据集中的值标签是否一致。我的策略是:
id
value label
宏功能id
宏函数label
的每个值的标签
如果您检测到某个值的标签不同,您可以执行某些操作来更改它。
这是用您的玩具代码验证的策略:
clear
tempfile f1
clear
input id
1
2
end
label define idlab 1 "One" 2 "Two"
lab val id idlab
levelsof id, local(values_id)
global labelvname1 : value label id
foreach x of local values_id{
global labelvname1_`x' : label ${labelvname1} `x'
}
save `f1'
clear
input id
1
2
end
label define idlab 1 "Three" 2 "Four"
lab val id idlab
global labelvname2 : value label id
foreach x of local values_id{
global labelvname2_`x' : label ${labelvname2} `x'
if "${labelvname1_`x'}"!="${labelvname2_`x'}"{
display "Label values are different for value `x'"
}
}
我希望这有帮助。