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
变量,而不是数字变量。