我首先将destring应用于ID变量(有17位数字)。它们被削弱了,但它们在科学符号中被显示出来。所以我尝试了命令format %20.0f。现在所有的数字都显示出来了,但是最后的2-3位数字现在被改变了。在这里输入图像描述
发布于 2022-09-21 15:53:59
Stata只能持有最多16位数的数字变量。
您最好的选择可能是将ID保留为字符串。
命令format只影响数据点对人类的显示方式,而不影响数据点的实际存储方式。
发布于 2022-09-21 16:25:19
这是为了补充@TheIceBear的答案。
format从不改变值。问题是,您的字符串太大了,即使它的数值等效值不能准确地保存在一个double中,除非偶尔。
clear
set obs 5
gen id = 17*"9" in 1
replace id = 16*"9" + "6" in 2
replace id = 16*"9" + "2" in 3
replace id = 15*"9" + "88" in 4
replace id = 15*"9" + "84" in 5
format id %20s
destring id, gen(nid)
format nid %20.0f
list
+----------------------------------------+
| id nid |
|----------------------------------------|
1. | 99999999999999999 100000000000000000 |
2. | 99999999999999996 100000000000000000 |
3. | 99999999999999992 100000000000000000 |
4. | 99999999999999988 99999999999999984 |
5. | 99999999999999984 99999999999999984 |
+----------------------------------------+https://stackoverflow.com/questions/73803006
复制相似问题