【问题标题】:Using cell value in formula在公式中使用单元格值
【发布时间】:2014-03-25 16:38:26
【问题描述】:

如果我在 Stata 中有一个包含数字的变量,我可以使用嵌入在公式中的值吗?

例如,我可变天数 (days),对于每个人,我想在第二个公式中使用该数字:

ID    Days    var_x_1    var_x_2    var_x_3    var_x_4    var_x_5    var_x_6
A      2        7           8          9          10         2          1
B      1        1           7          1          11         12         11
C      6        7           9          2          12         6          12
D      2        2           4          3          17         7          18

gen new_var = var_x_DAYS

变量new_var 将获取Days 中的值并从var_x 列表中提取相应的值:

ID new_var
A    8
B    1
C    12
D    4

我试过了:

local DaysUse = Days
g new_var = var_x_`DaysUse'

但是,这不起作用。

【问题讨论】:

    标签: variables stata stata-macros


    【解决方案1】:

    最后的陈述可能是完全合法的;它只是不做你想做的事。考虑

    local DaysUse = Days
    g new_var = var_x_`DaysUse'
    

    本地宏只是一些文本。更关键的是,它是文本常量或标量,而不是文本元素的变量或向量。在这里,Stata 会理解你想要的

    local DaysUse = Days[1] 
    

    这样您的local 将包含字符串2,至少对于您的示例而言,这样

    g new_var = var_x_2 
    

    将是宏替换后的最终结果。如果你去了

    local DaysUse = "Days"
    

    你会得到

    g new_var = var_x_Days
    

    这里没用。

    对于您的问题,有更积极的技术。

    gen new_var = . 
    quietly forval j = 1/6 { 
        replace new_var = var_x_`j' if Days == `j' 
    }     
    

    Stata 有一些你想要的东西。考虑

    sysuse auto, clear
    set seed 2803 
    gen index = ceil(runiform() * 74)
    gen bsample_mpg_1 = mpg[index]
    gen bsample_mpg_2 = mpg[ceil(runiform() * 74]
    

    作为获取引导样本的两种方法。但这并不适用于您的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多