【问题标题】:generating a variable in Stata在Stata中生成变量
【发布时间】:2021-03-06 22:51:27
【问题描述】:

我正在尝试使用以下代码生成 PMdist`i' 变量


display "************** PM10 distances **************"


forval i=1/12599 {
    display "Attempting to compute distance `i'"

    capture geodist latitude longitude latitude`i' longitude`i' [if] [in], generate(PMdist`i')

    capture replace PMdist`i' = . if (PMdist`i' > 257 & !missing(PMdist`i'))

    capture drop latitude`i' longitude`i'
  }
egen PMmindist = rowmin(PMdist1-PMdist12581)

forval i=1/12599 {

    capture drop PMdist`i'
}

谁能告诉我为什么 geodist 不起作用以及替代解决方案是什么?

【问题讨论】:

  • “不工作”是什么意思?这可能很慢,但还有其他问题吗?为什么有些地方是 12599 而有些地方是 12581?这里没有足够的信息来提供准确的帮助。代码应该首先在一个简单的数据集上进行测试。
  • 我正在使用作者使用的相同数据集复制此数据代码(作者使用)。当我运行它时,它无法生成 PMdisti' variable, and when I ran another code that require to use PMdist'i' variable, the error shows 'cannot find Pmdisti' 变量。
  • 我将首先删除您的 capture 命令。 geodist 命令可能存在问题,但使用 capture 时无法发现。
  • 可能您的一个或多个 long/lat(`i') 变量还不存在。

标签: stata


【解决方案1】:

许多 Stata 命令允许可选的ifin 条件。它们是可选的,在帮助文件中用方括号表示。但是,调用实际命令时不应使用这些方括号。

在您的情况下,您似乎不需要 ifin 条件,因此您可以完全摆脱它们。

capture geodist latitude longitude latitude`i' longitude`i', generate(PMdist`i')

【讨论】:

  • 我也试过不使用 [in] [if]。但它仍然无法生成该变量。后来我添加了 [if] [in] 但它没有做任何改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多