簡體   English   中英

Stata foreach 循環從變量名列表中生成新變量

[英]Stata foreach loop to generate new variables from a list of variable names

我正在尋找創建一個循環,該循環創建虛擬變量並從變量名列表中命名它們,然后在所有變量名都被迭代一次后停止。

我的嘗試:


gen c = 0
foreach x of varlist stchpr01-stchpr11{
        foreach i in teacher_late teacher_absent teacher_skip teacher_bully teacher_harass_teachers teacher_harass_pupils teacher_language teacher_drugs teacher_alcohol teacher_health teacher_conflict{
            while c < 11{
                gen  `i' = 0
                replace `i' = 1 if `x' == 2 | `x' == 3
                replace `i' = 0 if `x' == 1
                replace `i' = . if missing(`x')
                replace c = c+1
            }
        }
}

我感覺到你在

  • Stata 意義上的本地宏和變量(雖然c機器是合法的,但本地宏更適合用作計數器,除了你根本不需要)

  • 在您嘗試generate已經存在的變量時generatereplace

  • 並行循環,不是嵌套循環

(對我來說)有點不清楚的正是你想要做的。

我認為這就是你想要的。

  • 您有 11 個現有變量。

  • 您需要 11 個對應的新變量,如果對應的現有變量為 2 或 3,則每個新變量為指示符 1,如果為 1,則為 0,否則為缺失。

如果是這樣,這是一個代碼草圖。 注意:這只是一個循環。

local newvars teacher_late teacher_absent teacher_skip teacher_bully teacher_harass_teachers teacher_harass_pupils teacher_language teacher_drugs teacher_alcohol teacher_health teacher_conflict
            
foreach x of varlist stchpr01-stchpr11 {
    gettoken new newvars : newvars 
    gen `new' = cond(`x' == 2 | `x' == 3, 1, cond(`x' == 1, 0, .)) 
} 

另見https://journals.sagepub.com/doi/pdf/10.1177/1536867X211063415

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM