String 在Stata中将字符串转换为数字
我在一个名为String 在Stata中将字符串转换为数字,string,stata,String,Stata,我在一个名为agen的变量中有个人年龄的调查数据。最初,变量是字符串,所以我使用encode命令将其转换为数字。当我试图生成一个涉及户主年龄的新变量时,生成的新变量不一致 我使用的命令如下: encode agen, gen(age) gen hhage=age if relntohrp==1 生成的新变量不一致,因为当我浏览它时:hh头在第一个小时的年龄是65岁,而生成的新数字是63岁。当我检查第二个家庭时,变量hhage报告housheold的户主是28而不是33。等等。试着看看这个方法
agen
的变量中有个人年龄的调查数据。最初,变量是字符串,所以我使用encode
命令将其转换为数字。当我试图生成一个涉及户主年龄的新变量时,生成的新变量不一致
我使用的命令如下:
encode agen, gen(age)
gen hhage=age if relntohrp==1
生成的新变量不一致,因为当我浏览它时:hh头在第一个小时的年龄是65岁,而生成的新数字是63岁。当我检查第二个家庭时,变量
hhage
报告housheold的户主是28而不是33。等等。试着看看这个方法?听起来您可能在方法中的某个地方出错了。运行帮助编码
,您可以阅读:
如果varname包含恰好存储的数字,请不要使用encode
作为弦;相反,使用generate newvar=real(varname)
或destring
;
请参阅real()或[D]destring
例如:
clear all
set more off
input id str5 age
1 "32"
2 "14"
3 "65"
4 "54"
5 "98"
end
list
encode age, gen(age2)
destring age, gen(age3)
list, nolabel
注意使用encode
和destring
之间的区别。前者将数字代码(1,2,3,…)分配给字符串值,而destring
将字符串值转换为数字。当您列出时,您会看到剥离值标签:
. list, nolabel
+------------------------+
| id age age3 age2 |
|------------------------|
1. | 1 32 32 2 |
2. | 2 14 14 1 |
3. | 3 65 65 4 |
4. | 4 54 54 3 |
5. | 5 98 98 5 |
+------------------------+
简单的列表
或浏览
可能会让您感到困惑,因为编码
会分配自然数序列,但也会分配与原始字符串相等的值标签:
. list
+------------------------+
| id age age3 age2 |
|------------------------|
1. | 1 32 32 32 |
2. | 2 14 14 14 |
3. | 3 65 65 65 |
4. | 4 54 54 54 |
5. | 5 98 98 98 |
+------------------------+
nolabel
选项显示“基础”数据
您提到这是不一致的,但对于未来的问题,发布准确的输入和结果对于那些试图帮助您的人来说更有用。@Roberto Ferrer的答案是正确的,我敢打赌。