楼主: EView.Q
9734 22

[数据管理求助] 怎么删除stata数据里的 . 呢(保留各变量原有数据为前提!) [推广有奖]

  • 0关注
  • 0粉丝

大专生

30%

还不是VIP/贵宾

-

威望
0
论坛币
363 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
902 点
帖子
32
精华
0
在线时间
50 小时
注册时间
2014-10-27
最后登录
2016-6-8

30论坛币
count
local obs = r(N)
gen m1= .
forvalues i=1/`obs'{
egen b=sum(abs(inc1[`i']-inc1) )
replace m1= b in  `i'
drop b
}
       由于我用上面这个循环来计算数据,大量的 . 也会进入循环中,严重影响了运行的速度,其实去掉.后,最多的一组变量也就300多个样本。
      
       我尝试了sort inc 然后把obs赋值300,然而其他inc不会置顶数据···还是要循环一堆 .

       之后尝试了 keep,和drop,虽然可以方便的删除 . 但删一个变量会影响到其他变量,同时删除又没用
中间尝试了 |,也是如此。

       数据在附件里,希望大家可以帮在下试一试,我也会接着尝试下去。
       实在不行只能用EXCEL整理一遍数据了······之前这么做过,但数据很多份,时间有限,等你们的好消息

360截图-6693890.jpg (16.82 KB)

数据的样子

数据的样子

空值太多的待处理数据.dta

2.81 MB

关键词:STATA数据 Stata tata forvalues forvalue
沙发
EView.Q 发表于 2016-3-29 10:59:22 |只看作者 |坛友微信交流群
~~翻了很多帖子才厚着脸皮来求助大家,如果是我理解问题,或者是没看到的,还望海涵

使用道具

藤椅
EView.Q 发表于 2016-3-30 09:09:23 |只看作者 |坛友微信交流群
无人回复的窘境~~何时破除{:3_61:}

使用道具

板凳
znxkxx 发表于 2016-3-30 10:33:37 |只看作者 |坛友微信交流群
EView.Q 发表于 2016-3-30 09:09
无人回复的窘境~~何时破除
能解释下你想做什么吗?你的代码写的有一点乱。。

使用道具

报纸
EView.Q 发表于 2016-3-30 14:22:56 |只看作者 |坛友微信交流群
znxkxx 发表于 2016-3-30 10:33
能解释下你想做什么吗?你的代码写的有一点乱。。
···也不是很乱啊
代码不是重点,我的问题是如何删掉每一列数据中的miss而不影响其他的列~~
即保留inc1-inc72所有数字,去除所有.
附件里有dta,大家可以下载下来做下试一试~~
谢谢了

使用道具

地板
夏目贵志 发表于 2016-3-31 10:59:45 |只看作者 |坛友微信交流群
EView.Q 发表于 2016-3-30 14:22
···也不是很乱啊
代码不是重点,我的问题是如何删掉每一列数据中的miss而不影响其他的列~~
...
我也不是特别理解你具体要干什么,但是如果要删掉完全为空的观测值的话,我一般会用egen rownonmiss

使用道具

7
EView.Q 发表于 2016-3-31 15:02:02 |只看作者 |坛友微信交流群
夏目贵志 发表于 2016-3-31 10:59
我也不是特别理解你具体要干什么,但是如果要删掉完全为空的观测值的话,我一般会用egen rownonmiss
。。。那我再具体解释一下,实在不行上步骤图了{:2_25:}
一、如1楼图示,有inc1-inc72。由于原始数据每一列都是10000多个,处理后留下了大量的 . 即miss
二、开篇的算法是对其中一列变量的计算,由于太多的。,导致循环次数太多了,所以我得把数据中的。删掉,每一列就剩几百个数,这样循环就能正常走(如果大家能帮我修改算法也行,改成只取有效数算,不是简单的计数循环)
三、如果用keep if inc1 != .则其他列的数据会被删···同时对所有用keep,数据不变
drop的情况也是如此,可能我用法问题?
四、之前论坛里的
egen mis = rowmiss(_all)
drop if mis
, 或是
. mvencode _all,mv(-9996) drop if
都试过了,但结果都是要么全删了,要么部分删掉,其余的受影响····
五、在这过程中我参考了
https://bbs.pinggu.org/thread-643201-1-1.html

https://bbs.pinggu.org/thread-900788-1-1.html
·································································································
大概就这么多,还是不清楚的话,晚上上图

使用道具

8
夏目贵志 发表于 2016-4-1 10:41:53 |只看作者 |坛友微信交流群
EView.Q 发表于 2016-3-31 15:02
。。。那我再具体解释一下,实在不行上步骤图了
一、如1楼图示,有inc1-inc72。由于原始数据每一 ...
别的先不说,我试了你的数据和代码,总共只要33秒就处理好了啊。就算每个变量都要处理,总共72个变量,也不过40分钟的事。就这么做了呗。

不过呢,如果像下面这样就只要0.07秒就能处理一个变量了。72个变量的话4秒就好了哦~
  1. count
  2. local obs = r(N)
  3. forvalues j=1/72 {
  4.         cap drop m`j'
  5.         gen m`j'= .
  6.         forvalues i=1/`obs'{
  7.                 if inc`j'[`i']-inc`j'!=. {
  8.                         egen b=sum(abs(inc`j'[`i']-inc`j') )
  9.                         replace m`j'= b in  `i'
  10.                         drop b
  11.                 }
  12.         }
  13. }
复制代码

使用道具

9
夏目贵志 发表于 2016-4-1 10:43:27 |只看作者 |坛友微信交流群
然后既然我做都做了,结果也一起发给你吧
result.zip (70.3 KB) 本附件包括:
  • result.dta

使用道具

10
米高兄弟 在职认证  发表于 2019-9-10 13:54:34 |只看作者 |坛友微信交流群
仅仅删除一行,目前还是不行啊

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 05:48