一、为什么excel看起来是数字,导入stata后变文本了:
1.可能excel该值有空格(excel用清除格式后问题还是存在)
2.可能有格式没有清除(有时候excel里面清除格式了导入stata后就正常了,就属于这种情况)
二、解决办法
简单粗暴的说:
encode t201301, gen (t201301t) //不推荐!变成数值后有label value的值,不好。t201301t得值是标签值,没有标签纸有时候会变成1,2,3这样得顺序值
destring t201301,replace //失败,前提要有numeric
gen ttt=real(t201301) //成功
三、原理
http://www.epiman.cn/thread-44136-1-1.html 网站说明
在我们处理数据的时候,经常会遇到原始数据的数据类型不是我们所需要的数据类型,这就需要我们将原始数据中的一些数据类型进行转换,从而将其转成我们期望的数据类型。* B, x& U, |, m2 D
1、将字符型转化为数值型
- L& z- d* a; m" W+ ^1 v
1.1 real()函数( s" T% }1 Q* t& T) _1 D1 y
real(s) 可以将以字符型格式储存的数值变量s转化为数值型变量。real(s) 返回的值为数值(以字符型格式储存的数值变量)或缺失值(以字符型格式储存的非数值变量)。6 K8 a0 `5 g" N* ?* I
例如:
real("5.2")+1 = 6.2
real("epiman") = .
1.2 destring6 z' j$ ?- w7 [. {
将以字符型格式储存的数值变量转化为数值型变量。ignore() 选项为移除的字符。
例如:
webuse destring2, clear /*读取数据destring2*/6 h6 `% f2 S; R* V9 m' z; h
list /*浏览数据*/
destring date, ignore(" ") replace /*将变量“日期”转化为数值型变量,且移除空格。*/: x! r( X* M- h; b" P
list /*再次浏览数据*/
* Q( t8 J/ Q& c4 l+ V# t! Y
1.3 encode
encode命令可以将以字符型格式储存的非数值变量转换为数值型变量。并且将原来的字符型数据设为转换后的数值型变量的标签。
例如:1 Z5 ?: Q" Y- k* h% [4 C8 x
webuse hbp2 /*读取数据hbp2*/
describe sex /*查看变量sex*// ?1 ?, q# w! \( A/ g! X
encode sex, generate(gender) /*生成数值型变量gender,且创建标签 */ 4 v( ?: Q9 S! k/ U: U: f( [) u r7 f
list sex gender in 1/4 /*浏览变量sex、gender的前四条记录*/
list sex gender in 1/4, nolabel /*浏览变量sex、gender的前四条记录,不显示标签*/ , U% J5 H$ U- `
2 M) B+ l! S( L/ k7 R9 v
7 }. S0 b. x( I3 s, g' F3 f# o6 ^ \
2、将数值型转化为字符型
2.1 string()函数* I% A8 A% z O1 f
string(n)函数可以将以数值型格式储存的变量n转化为字符型变量。string(n) 返回的值为字符或缺失值。
例如:0 g' s0 a. B a
string(66)+"epiman" = "66epiman") e& P p4 E" {: O- f0 V# u( F
string(.) =.
2.2 tostring @% D" d/ y. A/ {" w+ g, X
tostring命令可以将数值型变量转化为字符型变量。: r6 B L% r4 E2 n2 |2 H; H3 N
例如:
webuse tostring, clear /*读取数据tostring*/4 T; ]( j( t, z& B+ _& E/ B7 r
describe /*查看数据类型*/
list /*浏览数据*/& G" A" p" X4 }# m- Q3 R+ W9 u' ^
tostring year day, replace /*将变量year和day转为字符型变量*/
describe /*查看数据类型*/4 g3 N7 Y9 w: |8 i4 N
list /*浏览数据*/
2.3 decode1 S# P# |& Q3 @3 U* O2 {
decode命令可以将数值型变量转化为字符型变量。 n: Z5 `! ^1 ^5 U
例如:
webuse hbp3, clear /*读取数据hbp3*/- Z6 @; T- x# i' b z6 |+ c; }
describe female /*查看变量femmale*/
decode female, generate(sex) /*再数值型变量female的基础上生成字符型变量sex*// K" I% D; J& W. z/ v
describe sex /*查看变量sex*/% v& G7 {. [4 ]% l6 c
list female sex in 1/4 /*浏览变量female、sex的前四条记录*/ % p+ A* g2 G& R0 G1 j
list female sex in 1/4, nolabel /*浏览变量female、sex的前四条记录,不显示标签*/