楼主: 莞木杙
883 5

[数据管理求助] 如何对数据进行匹配并生成新的值? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

81%

还不是VIP/贵宾

-

威望
0
论坛币
62152 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4576 点
帖子
84
精华
0
在线时间
267 小时
注册时间
2013-8-22
最后登录
2022-1-8

楼主
莞木杙 学生认证  发表于 2017-7-20 05:07:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

* Example generated by -dataex-. To install: ssc install dataex
clear
input str12 ID byte(f_2_sel_0_ f_2_sel_1_ f_2_sel_2_ f_2_sel_3_ f_3_0_ f_3_1_ f_3_2_ f_3_3_ f118_0_ f118_1_ f118_2_ f118_3_ f123a_1_0_) double(f123a_1_1_ f123a_1_2_) byte show
"010233125001" . 2 . . . 1 . . . 1 . . . 10000    . 1
"010446111001" . 1 2 . . 2 1 . . 2 1 . .     . 2500 1
"010451322001" . 1 2 . . 2 1 . . 2 1 . .     .  200 1
"034676332001" . 1 . . . 1 . . . 2 . . . 10000    . 1
"046746315002" . 1 2 . . 2 1 . . 2 1 . .     . 5500 1
"054249302002" . 1 . . . 3 . . . 2 . . .     .    . 1
"056302310001" . 1 2 . . 2 1 . . 2 1 . .     .    . 1
"117489310001" . 2 . . . 3 . . . 2 . . .     .    . 1
"151156107002" . 1 1 2 . 1 4 4 . 2 . 1 .     .    . 1
"151156207002" . 1 1 2 . 3 3 3 . 2 . 1 .     .    . 1
"154628222002" . 1 1 1 . 2 3 3 . 2 . 2 .     .    . 1
"161159121002" . 1 2 . . 2 1 . . 2 1 . .     . 4500 1
"200104322002" . 1 1 2 . 2 1 3 . 2 2 1 .     .  700 1
"261676326002" . 1 2 . . 1 3 . . 2 1 . .  1250    . 1
"265359204002" . 1 1 2 . 1 4 3 . 2 2 . .  3000    . 1
"296081325002" . 1 2 . . 2 1 . . 2 1 . .     .  500 1
"324045137002" . 1 2 . . 3 3 . . 2 . . .     .    . 1
"324045207001" . 1 2 . . 2 1 . . 2 1 . .     . 3000 1
"330102210001" . 2 . . . 1 . . . 1 . . .     .    . 1
"336059213002" . . . . . . . . . . . . .     .    . 1
end
label values f_2_sel_0_ f_2_sel_0_
label values f_2_sel_1_ f_2_sel_1_
label def f_2_sel_1_ 1 "1 Ending", modify
label def f_2_sel_1_ 2 "2 Continuing", modify
label values f_2_sel_2_ f_2_sel_2_
label def f_2_sel_2_ 1 "1 Ending", modify
label def f_2_sel_2_ 2 "2 Continuing", modify
label values f_2_sel_3_ f_2_sel_3_
label def f_2_sel_3_ 1 "1 Ending", modify
label def f_2_sel_3_ 2 "2 Continuing", modify
label values f_3_0_ f_3_0_
label values f_3_1_ f_3_1_
label def f_3_1_ 1 "1 Own Agricultural Production and Business", modify
label def f_3_1_ 2 "2 Agricultural Employment", modify
label def f_3_1_ 3 "3 Non-agricultural Employment", modify
label values f_3_2_ f_3_2_
label def f_3_2_ 1 "1 Own Agricultural Production and Business", modify
label def f_3_2_ 3 "3 Non-agricultural Employment", modify
label def f_3_2_ 4 "4 Non-agricultural self-employment", modify
label values f_3_3_ f_3_3_
label def f_3_3_ 3 "3 Non-agricultural Employment", modify
label def f_3_3_ 4 "4 Non-agricultural self-employment", modify
label values f118_0_ f118_0_
label values f118_1_ f118_1_
label def f118_1_ 1 "1 Yes", modify
label def f118_1_ 2 "2 No", modify
label values f118_2_ f118_2_
label def f118_2_ 1 "1 Yes", modify
label def f118_2_ 2 "2 No", modify
label values f118_3_ f118_3_
label def f118_3_ 1 "1 Yes", modify
label def f118_3_ 2 "2 No", modify
[/CODE]

对不起又来求助了,这个问题有点复杂希望可以说清楚。。。我现在在做一份调查问卷的数据整理,但是在整理收入的时候遇到了很多问题。

如表,f_2_sel_1_ - f_2_sel_3_ 对应的是第一到第三份工作目前的工作状态,是结束了(Ending)还是仍然在继续,之后f_3_1到*_3的部分是这份工作的类型,f118对应的yes/no也是问现在是否还在从事这个工作,f123a_1_n_对应的第1/n份自农工作的收入。。。。这都是我没有展示全的,还有关于第1/n份农业相关雇佣工作的收入,非农收入,服役等等……

但是我感兴趣的仅仅是这个人在做调查问卷的时候是否在工作,工作的类型是什么已经年收入。我本来的策略是反正最近的一定是最新的,直接用egen XXX = rlast(varlist) 对应每一组最后出现的非缺失值的数据,虽然在收入这一块可能会出现既有农业收入又有非农收入,但是只要把最后工作的类型和收入的类别进行匹配就可以解决这个问题,但是在随后的数据处理中我发现这样处理存在两个明显的问题:

1. 有的人在问卷中反应出他们在做问卷的时候可能同时在做两份工作,即可能存在两个continuing 。。。用rlast就不能解决这个问题
还有更要命的问题是完整的数据里有很多类似先出现continuing再出现ending的情况,也就是说仍然在继续的并不是最后进行的工作,这样似乎也是可能的,比如我先做了A工作,然后又兼职了B再做C,但是B和C我都已经不再做了,A还在继续,反映在数据上就是第一份工作是A,第二份第三份是B和C,用我之前的思路就会得到C的收入,而不是从事A工作的收入……所以似乎我还是要通过对数据进行匹配来的到最后的答案……但是对于这样复杂的命令我现在一点头绪都没有,希望有大神可以帮忙解答一下QAQ

二维码

扫码加我 拉你入群

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

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


= = 我是热爱祖国的好青年

沙发
莞木杙 学生认证  发表于 2017-7-20 09:44:20
我尝试根据自己遇到的问题写了一段code。。这是我第一次写代码。。结果失败了,有大神可以指点一下吗QAQ

invalid syntax
  1. forvalue n=1/18 {
  2.         if f_3_`n'_==1 {
  3.                 local i= `0'
  4.                 local y=`i'+1
  5.                         gen ownagri_`y' = f123a_`y'_
  6.                         replace ownagri_`y' = . if f_2_sel_`n'_ ==1
  7.                 local i = `i'+1
  8.         }
  9.         else if f_3_`n'_==2 {
  10.                 local i= `0'
  11.                 local y=`i'+1
  12.                         gen agri_`y' = f126_a1_`n'_
  13.                         replace agri_`y' = .if f_2_sel_`n'_ ==1
  14.                 local i = `i'+1
  15.         }
  16.         else if f_3_`n'_==3 {
  17.                 local i= `0'
  18.                 local y=`i'+1
  19.                         gen nonagri_`y' = f126_a1_`n'_
  20.                         replace nonagri_`y' = . if f_2_sel_`n'_ ==1
  21.                 local i = `i'+1
  22.         }
  23.         else if f_3_`n'_==4 {
  24.                 local i=`0'
  25.                 local y=`i'+1
  26.                         gen nonagriself_`y' = f128_`n'_
  27.                         replace nonagriself_`y' = . if f_2_sel_`n'_ ==1
  28.                 local i = `i'+1
  29.         }
  30.         else if f_3_`n'_==5 {
  31.                 local i=`0'
  32.                 local y=`i'+1
  33.                         gen military_`y' = . if f_2_sel_`n'_ ==1  
  34.                 local i = `i'+1
  35.         }
  36. }
复制代码
= = 我是热爱祖国的好青年

藤椅
黃河泉 在职认证  发表于 2017-7-20 10:54:44
我的经验是,一个太复杂的问题通常不容易得到答案的。你自己要消化过,然后每次一个小问题,大家才不会因为问题太大而不愿意花太多时间去了解与回应!

板凳
蓝色 发表于 2017-7-20 13:03:47
先的清理数据

报纸
莞木杙 学生认证  发表于 2017-7-20 19:25:12
黃河泉 发表于 2017-7-20 10:54
我的经验是,一个太复杂的问题通常不容易得到答案的。你自己要消化过,然后每次一个小问题,大家才不会因为 ...
  1. forvalue n=1/18 {
  2.         if f_3_`n'_==1 {
  3.                 local i= `0'
  4.                 local y=`i'+1
  5.                         gen ownagri_`y' = f123a_`y'_
  6.                         replace ownagri_`y' = . if f_2_sel_`n'_ ==1
  7.                 local i = `i'+1
  8.         }
  9. }
复制代码
我试了一下。。。这一段command就已经syntax error了。。QAQ
请问语法结构可以怎么调整呢?

地板
莞木杙 学生认证  发表于 2017-7-20 23:17:16
黃河泉 发表于 2017-7-20 10:54
我的经验是,一个太复杂的问题通常不容易得到答案的。你自己要消化过,然后每次一个小问题,大家才不会因为 ...
对不起。。。因为我完全是新手。。。然后又要处理数据。。。自己学习的基本的stata操作完全用不上。。所以有的时候自己也有点摸不着头脑。。。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-24 06:22