syntax-error - 重塑长多个变量时出错
问题描述
我必须将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);
为什么?你能帮我修一下吗?
解决方案
这个想法是在整形为长格式时只指定存根。为此,您需要从变量名称中删除年份部分并将唯一存根存储在可以传递给 reshape 的本地中:
/* (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 的变量中。
推荐阅读
- unity3d - 如何统一切换平台?
- signalr - Signlar 客户端未执行 connection.on 方法
- sql - 按日期获取加入订单最新记录的记录
- java - 由于收到致命警报,无法在 NetBeans 中使用 Maven Web 项目创建新的 Java:protocol_version
- html - HTML 音频适用于 src,但不适用于
- android - Camera2 MediaRecorder - 如何以 WebM 格式录制?
- arrays - 声明中的数组长度可以是非常量吗?
- java - “无法从存储库创建 Maven 项目。”
- python - 如何让 pandas str.contains 更快
- azure-devops - Azure DevOps:排除对 yaml 管道文件的更新触发相同的管道?