【问题标题】:Stata. How to split an observation?状态。如何拆分观察?
【发布时间】:2013-06-09 07:29:51
【问题描述】:

我的数据集中的一些观察需要分成两个或三个不同的观察。例如以下观察:

region  income   gdp   other
North   120      450   50

我需要将它分成三个观察值,对于所有变量相同的值,除了这样的区域:

region  income   gdp   other
IL      120      450   50
MI      120      450   50
IN      120      450   50

我需要类似的东西:

if (region == "North") {
//create three new observations and delete the old one
}

Stata 可以吗?

【问题讨论】:

  • 在应用之前,您的完整 region 变量存储在哪里?如果它在一个数据集中,只需展开所有变量并在行号上合并两个数据集。
  • @Fr.谢谢您的回复。它在数据集中。我不确定“合并两个数据集”是什么意思。并非所有观察都需要重复。只有那些在region 变量中具有值“North”的人应该被复制,并且必须为IL, MI, IN 更改值“North”...我不确定如何合并...你能详细说明一下吗?
  • 您是否有一个数据集包含一个变量持有区域和另一个持有状态?如果是这样,请根据需要扩展主数据,对它们进行相同的排序并使用_n 上的区域/州数据集进行合并。如果您在某处提供数据提取,也许会更容易向您展示它是如何工作的。
  • @Fr.当然,这是我的 .dta dl.dropboxusercontent.com/u/41007907/data.dta
  • 您的数据集未指定应将哪个区域分配给哪个州。您需要提供您想要获得的对应关系的列表。你真正想要得到什么对我来说仍然是个谜,抱歉。

标签: duplicates stata


【解决方案1】:

从您的示例中很难解决这里的一般问题。请注意,

if region == "North" { 
      <code>
} 

不像你预期的那样工作,因为它相当于

if region[1] == "North" { 
      <code>
} 

并且是一个一次性的分支。这记录在http://www.stata.com/support/faqs/programming/if-command-versus-if-qualifier/

这是合法的:

expand 3 if region == "North" 

但您需要逐一替换。

(稍后)一个疯狂的猜测是,您正在追随 Stata. How to match values in 1:m relationship? 并试图重新发明 merge。我只能说,对于经验丰富的 Stata 程序员来说,这将是一个重大项目。

(稍后)

 gen long obsid = _n 
 gen state = "" 
 gen isnorth = region == "North" 
 expand 3 if isnorth 
 bysort obsid : replace state = "IL" if isnorth & _n == 1 
 by obsid : replace state = "MI" if isnorth & _n == 2
 by obsid : replace state = "IN" if isnorth & _n == 3  

【讨论】:

  • expand 创建重复项。是否有任何代码可以保留一个副本,并修改其他两个副本。还是必须手动完成?谢谢
  • 和上面一模一样,只是不想改的就不改。
  • (稍后)我不认为这两个问题可能相关:) 无论如何,看来splitting observations 毕竟必须手动完成。没有办法将protected status 指定为第一个副本,并使用conditional structures 自定义其他两个。
  • 区别没有意义:如果您可以在 Stata 中“手动”执行某项操作,则可以对其进行编程,只要通过 .do 文件即可。我不能建议具体的代码,因为我不明白你想要做什么。
  • 我正在使用.do 文件。好的,正是 1) 我想将我的样本中所有具有 North 值的 region 变量的观察结果分成三个副本。 2)我想更改那些重复的region 的值(到 IL、MI 和 IN)...
猜你喜欢
  • 2021-12-11
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多