全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
20722 12
2015-02-03
我们知道,将数据导入STATA后,如果觉得数据储存空间有点大,会用-compress-命令进行压缩下。这样基本会搞定。
    可是最近的一次经历让我改变了看法:导入一份125M左右的Excel,后储存为.dta格式,居然有2.3+G -- 匪夷所思吧!
    回到STATA,compress --> save ,依然是那么大!……思索良久…… -des- 查看下, 哇!有三个字符型变量居然是:str2045!!看来应该就是这个原因了,why?经过一阵摸索,发现了原来是有一条记录导入时出现差错一个单元格里放入几乎所有变量的值,too long too long……删除 --> compress --> save , 马上只有200+M了!
    总结:如果发现.dta格式大小异常,不妨尝试查看是不是因为某个字符型变量出现问题
1.des   --> 找出异常长的字符型变量,如:abvar。2.replace abvar=subinstr(abvar," ","",.) --> 消除不必要的空格(多数情况下,空格都是占空间的和无意义的!)
3.-compress-并-des abvar-如果差不多了就到这吧,毕竟时间宝贵!如果还是很异常,如:str1000!那么,继续吧。。。
4.ed abvar --> 肉眼大概估计出正常的、最小的长度为多少合适,如:str30(或者省去这一步,直接跳到下一步)

5.ed abvar if length(abvar) >= 30  --> 哪些作怪的异常记录必会在这里面,通常这一步就可以发现它们了!
6.发现了后,接下来3种处理方法,自己选择吧!
A、修改记录:如果只有少数几个异常记录,直接手动在单元格里改吧,可以避免损失这几条样本(but,谨慎!不可逆。。。)
B、删除:drop if length(abvar)># (#的大小自己设定一个--保证异常的记录删除又不会影响正常的记录即可!)
删除后 --> compress --> OK!  
C、-recast-  如:recast str30 abvar , force (慎用,因为如果30这个数不准确,那么会造成部分记录显示不完全!

then,-compress- --> OK!
详细操作,见代码:
复制代码

最后附上一个自编的批量删除空格的小命令:-dlblanks- (见代码!)用法:dlblanks     v1  v2  v3 ...  [if]  [in]  , 即可删除字符型变量v1  v2  v3 ...中的所有空格。
复制代码








二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-2-3 17:13:13
推荐用browse,edit有点儿危险
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-4 10:18:02
谢谢楼主分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-7 02:21:37
georgeshe 发表于 2015-2-3 17:13
推荐用browse,edit有点儿危险
嗯,灰常有道理,只是习惯,e d按键,咯咯
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-16 22:47:59
附一个自编的批量删除多个字符型变量的小命令:-dlblanks-
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-1-28 12:42:05
这个帖子启发很大
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群