Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 作为变量的文件名的一部分_Variables_Stata_Stata Macros - Fatal编程技术网

Variables 作为变量的文件名的一部分

Variables 作为变量的文件名的一部分,variables,stata,stata-macros,Variables,Stata,Stata Macros,我有一个类似名称的文件列表,例如: 2002\u文件 2003\u文件 2004\u文件 我将运行一个简单的脚本: foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 { use "$input\`year'_file.dta ", clear keep v1 v2 v3 tab v1, gen (v1_dummy) gen year = 'x' save "$output\`y

我有一个类似名称的文件列表,例如:

  • 2002\u文件
  • 2003\u文件
  • 2004\u文件
我将运行一个简单的脚本:

foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 {  
use "$input\`year'_file.dta ", clear
keep v1 v2 v3
tab v1, gen (v1_dummy)
gen year = 'x'
save "$output\`year'_newfile.dta ", replace
}
但是,我希望其中一个文件被创建为相应的年份变量


如何添加变量year=
'year'

您不在任何地方定义本地宏
x

以下方面应起作用:

foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 { use "$input\`year'_file.dta ", clear keep v1 v2 v3 tab v1, gen (v1_dummy) gen year = `year' save "$output\`year'_newfile.dta ", replace } 2002年、2003年、2004年、2005年、2006年、2008年、2009年、2012年、2013年、2014年、2015年每年{ 使用“$input\`year'\u file.dta”,清除 保持v1 v2 v3 制表符v1,发电机(v1\U虚拟) 发电机年份=‘年’ 保存“$output\`year'\u newfile.dta”,替换 } 仅针对特定年份:

foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 { use "$input\`year'_file.dta ", clear keep v1 v2 v3 tab v1, gen (v1_dummy) if `year' == 2005 gen year = `year' save "$output\`year'_newfile.dta ", replace } 2002年、2003年、2004年、2005年、2006年、2008年、2009年、2012年、2013年、2014年、2015年每年{ 使用“$input\`year'\u file.dta”,清除 保持v1 v2 v3 制表符v1,发电机(v1\U虚拟) 如果'year'==2005 gen year='year' 保存“$output\`year'\u newfile.dta”,替换 }
您不在任何地方定义本地宏
x

以下方面应起作用:

foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 { use "$input\`year'_file.dta ", clear keep v1 v2 v3 tab v1, gen (v1_dummy) gen year = `year' save "$output\`year'_newfile.dta ", replace } 2002年、2003年、2004年、2005年、2006年、2008年、2009年、2012年、2013年、2014年、2015年每年{ 使用“$input\`year'\u file.dta”,清除 保持v1 v2 v3 制表符v1,发电机(v1\U虚拟) 发电机年份=‘年’ 保存“$output\`year'\u newfile.dta”,替换 } 仅针对特定年份:

foreach year in 2002 2003 2004 2005 2006 2007 2008 2009 2011 2012 2013 2014 2015 { use "$input\`year'_file.dta ", clear keep v1 v2 v3 tab v1, gen (v1_dummy) if `year' == 2005 gen year = `year' save "$output\`year'_newfile.dta ", replace } 2002年、2003年、2004年、2005年、2006年、2008年、2009年、2012年、2013年、2014年、2015年每年{ 使用“$input\`year'\u file.dta”,清除 保持v1 v2 v3 制表符v1,发电机(v1\U虚拟) 如果'year'==2005 gen year='year' 保存“$output\`year'\u newfile.dta”,替换 }
你说得对,我纠正了这个问题!每种情况都没有区别,我现在犯的这个错误是写问题和修改示例。@JoyceMaia您想在新文件中只添加一个特定年份的变量吗?我需要将文件名中与年份匹配的这一部分设置为变量(gen year=`x'),但我不知道如何设置。错误是缺少引号“`x'”或“年”。@JoyceMaia您不需要引号。如果您使用引号,您将创建一个字符串
year
变量,而不是一个数字变量。您是对的,我更正了这个问题!每种情况都没有区别,我现在犯的这个错误是写问题和修改示例。@JoyceMaia您想在新文件中只添加一个特定年份的变量吗?我需要将文件名中与年份匹配的这一部分设置为变量(gen year=`x'),但我不知道如何设置。错误是缺少引号“`x'”或“年”。@JoyceMaia您不需要引号。如果使用引号,将创建字符串
year
变量,而不是数字变量。