STATA 循环应用

Posted myrj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STATA 循环应用相关的知识,希望对你有一定的参考价值。

gen tz=0
local vv pid_a_c1 pid_a_c2 pid_a_c3 pid_a_c4 pid_a_c5 pid_a_c6 pid_a_c7 pid_a_c8 pid_a_c9 pid_a_c10
local k=_N

forvalues i=1/`k\'
    
local mm=0
foreach var of varlist `vv\'
    local mm=`mm\'+1
    if pid[`i\']==`var\'[`i\'] 
        if `mm\'==10
            local bza=ustrright("`var\'",2)
        
       else
           local bza=ustrright("`var\'",1)
       
       //disp `bza\'
        if tb6_a18_c`bza\'[`i\']==1
            replace tz[`i\']=tz[`i\']+1
        
        
    

 

在Stata中,foreach x的R等价函数是什么?[关闭]

在Stata中,如果我想循环遍历几个变量并标记所有变量,我会执行以下操作

foreach x in a c z t s {
cap label drop `x'
label define `x' 1 "Yes" 2 "No"
label values `x' `x'
}

请有人告诉我如何在R中执行此操作?

答案

R在Stata的意义上没有“标签”,也没有区分for循环的类型(如Stata的forvaluesforeach)。您可以使用因子变量,它们与标记的数值有些相似(并且在其建模命令中另外表现得像Stata的i.前缀表示法)。您可以以与Stata代码非常相似的方式从现有数据中创建因子变量。

我将假设您有一个名为dat的数据框,其中包含名为aczts以及可能的其他变量的变量。如果是这样,那么你想循环遍历变量的名称:

for (i in c("a", "c", "z", "t", "s")) {
    dat[[i]] <- factor(dat[[i]], levels = 1:2, labels = c("Yes", "No"))
}

如果这些名称在数据框(它们可能是)中是唯一的,您可以选择在数据框中循环变量的位置:

pos <- match(c("a", "c", "z", "t", "s"), names(dat))
for (i in pos) {
    dat[[i]] <- factor(dat[[i]], levels = 1:2, labels = c("Yes", "No"))
}

如果这些是您的数据集中唯一的变量,您可以使用lapply和一些小作弊符号:

dat[] <- lapply(dat, factor, levels = 1:2, labels = c("Yes", "No"))

有两个附加软件包提供更多类似Stata的标签功能:labelledHmisc,这可能值得探索。但是,在大多数情况下,因素可能会给你你想要的东西。

以上是关于STATA 循环应用的主要内容,如果未能解决你的问题,请参考以下文章

01 导论计量经济学及stata应用

01 导论计量经济学及stata应用

02 stata入门计量经济学及stata应用

02 stata入门计量经济学及stata应用

具有嵌套循环状态的填充变量

写为Stata文件时,R中应用的标签不保存