【问题标题】:Generate a variable for an entire household based on another variable for cross sectional data根据横截面数据的另一个变量为整个家庭生成一个变量
【发布时间】:2017-03-01 01:44:18
【问题描述】:

我有一个关于不同家庭的数据集。每个家庭都有不同的个体。我想为特定变量输入一个条目(个人)并将其应用于整个家庭。最后,我想对家庭数据进行回归并忽略个人。例如:

家庭身份证 |个人身份证 |变量 1

H1 ​​| A1 |a

H1 ​​| A2 | .

H1 ​​| A3 |一个

H1 ​​| A4 |一个

H2 | A1 |乙

H2 | A2 | .

H3 | A1 |乙

H3 | A2 |一个

H3 | A3 | .

H3 | A4 |一个

H3 | A5 | .

H3 | A6 | .

我想在哪里创建一个数据:

家庭 id 变量 1

H1 ​​|一个

H2 |乙

H3 |乙
[编辑:可以通过 egen 来完成。我试图通过嵌套循环来处理它。

> foreach h in household_id{  
>       local d = 0  
>       local e = 0  
>       foreach i in individual_id{  
>       replace `d' = 1  if var1 == 1  
>       replace `e' = 2  if var1 == 2  
>       }  
>   foreach i in individual_id{  
>       replace a = 1 if `d' == 1  
>       replace a = 2 if `e' == 2  
>       }  
>       }  

这里的 a 是另一个变量,我将直接用它来替换 var1。代码报错:

0 invalid name

我的代码需要进行哪些更正?我对本地宏的使用是否存在根本缺陷?使用 tempvar 也没有帮助。

【问题讨论】:

  • SO 不是我们为您编写代码的代码编写服务。请在尝试编写代码时付出一些努力。
  • help bysorthelp egen 可能是很好的第一步
  • @Eric egen 有效。谢谢您的帮助。我一直在尝试使用嵌套循环;但是,我仍在为生成的局部变量而苦苦挣扎。
  • 很高兴您正在编写代码。但是你需要展示它是什么让 cmets 上它!
  • @NickCox 很抱歉没有早点这样做。我是 Stackoverflow 的新手。我已经添加了代码。请看一看。

标签: variables stata


【解决方案1】:

显示的代码非常混乱。

在循环内部从未引用过的单个实体上的循环是合法的,但仅相当于内部的语句,执行一次。

请注意,您永远不会在循环中引用本地宏 hi

因此您的代码相当于

local d = 0  
local e = 0  
replace `d' = 1  if var1 == 1  
replace `e' = 2  if var1 == 2  
replace a = 1 if `d' == 1  
replace a = 2 if `e' == 2  

当本地宏 d 首先被它的内容替换时,这会失败,这会导致

replace 0 = 1 if var1 == 1 

并且错误消息是正确的,因为0 不是有效的变量名。下一个语句会引发同样的问题。

Stata 从来没有进行过测试

... if 0 == 1 

... if 0 == 2 

这些陈述虽然合法,但不会做任何事情,因为条件永远不会得到满足。

到目前为止,如此消极。我不能积极地建议代码,因为我不明白你想做什么。您发布的内容看起来不像真实或真实的数据。我建议您查看http://www.statalist.org/forums/help#stata,它建议如何发布Stata 数据示例(此处与此相关)以及https://stackoverflow.com/help/mcve(此处确实制定了标准)。

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2015-05-15
    相关资源
    最近更新 更多