重塑长多个变量时出错

问题描述 投票:0回答:2

我必须

reshape
我的数据集从宽到长。我有 500 个变量,范围从 2016 年到 2007 年,记录为
abcd2016
等等。我需要一个程序,让我能够
reshape
而无需写下所有变量的名称,然后我运行:

unab vars : *2016 
local stubs16 : subinstr local vars "2016" "", all
unab vars : *2015 
local stubs15 : subinstr local vars "2015" "", all

等等,然后:

reshape long `stubs16' `stubs15' `stubs14' `stubs13' `stubs12' `stubs11' `stubs10' `stubs09' `stubs08' `stubs07', i(id) j(year)

但我收到错误

invalid syntax
r(198);

为什么?你能帮我解决它吗?

syntax-error stata reshape stubs
2个回答
1
投票

这个想法是在重塑为长格式时仅指定存根。为此,您需要从变量名称中删除年份部分,并将唯一的存根存储在本地,您可以将其传递给重塑:

/* (1) Fake Data */
clear
set obs 100
gen id = _n
foreach s in stub stump head {
    forvalues t = 2008(1)2018 {
        gen `s'`t' = rnormal()
    }
}

/* (2) Get a list of stubs and reshape */
/* Get a list of variables that contain 20, which is stored in r(varlist) */
ds *20*
/* remove the year part */
local prefixes = ustrregexra("`r(varlist)'","20[0-9][0-9]","")
/* remove duplicates from list */
local prefixes: list uniq prefixes 
reshape long `prefixes', i(id) j(t)

这会将数字后缀存储在名为 t 的变量中。


0
投票

我想对 2005 年至 2020 年的面板数据进行重塑:并且在一个国家/地区从 2012 年至 2020 年有缺失值:我如何处理这个问题:
。重塑 long YR, i(CountryName) j(year) (j = 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020) 变量 YR2012 类型与其他 YR 变量不匹配 r(198);

© www.soinside.com 2019 - 2024. All rights reserved.