Replace 使用另一个文件中的案例替换一个数据集中的案例

Replace 使用另一个文件中的案例替换一个数据集中的案例,replace,stata,Replace,Stata,我有一个主数据文件,其中包含来自英语、德语和法语受访者的回复。开放式回复(OER)已发送给翻译人员,翻译人员将原始OER文件和这些文件的英文译本一起发送给我们。现在,我想用新信息替换主数据中保留用于英语翻译的“空”列 我的做法是: 在翻译文件中创建循环: foreach var of varlist *englishtranslation* { rename `var' new_`var' } 然后使用应答者ID将新的

我有一个主数据文件,其中包含来自英语、德语和法语受访者的回复。开放式回复(OER)已发送给翻译人员,翻译人员将原始OER文件和这些文件的英文译本一起发送给我们。现在,我想用新信息替换主数据中保留用于英语翻译的“空”列

我的做法是:

在翻译文件中创建循环:

foreach var of varlist *englishtranslation* {
    rename `var' new_`var'
}
然后使用应答者
ID
新的
合并到主数据中

使用
new.`var'
中的信息替换空白列中未丢失的大小写

放下
新的

但是,Stata一直说新变量名
new_`var'
无效:

您试图将q12_v1_995_oe_英语翻译重命名为 新的英语翻译。那是一个无效的状态 变量名

您对修复该错误或其他方法有何建议

非常感谢,

埃尔


编辑:我知道变量名的长度限制是32个字符,而该变量正好有32个字符,因此在尝试重命名时出现了错误。但是我需要想出一个系统的方法来命名这些变量,因为有很多人在处理它,我不想弄乱数据集的约定组织。

你的新名字有36个字符。限值为32(至少有Stata 12和Stata 13)

再现错误的示例:

clear
set more off

set obs 1

gen q12_v1_995_oe_englishtranslation = 99
gen new_q12_v1_995_oe_englishtranslation = 10
解决方案:缩短名称

有关详细信息,请参阅
帮助varname

编辑 关于您关于重命名的问题:

尝试:


有关详细信息,请参见
帮助重命名
帮助重命名组

你好,罗伯托,我可以重命名varname的一部分吗?例如,将“q12_v1_995_oe_englishtranslation”重命名为“q12_v1_995_oe_EnglishTrans”?我编辑了我的答案以解决“重命名”问题。该问题或组织团队的工作流程是从编程问题中删除的一个(或多个)步骤。当然应该有关系。如果Stata是支持团队统计工作的主要应用程序,那么“商定的组织”应该考虑到这一点(我怀疑这是您的情况)。如果主应用程序不是Stata,但是您需要/想要/希望使用它,那么您可能需要说服其他团队成员使用较短名称的“需要”。至少,我不知道有什么办法可以在Stata内部绕过这个问题。我希望是这样!不幸的是,客户坚持使用这些名称,而我无法就这个问题与他们进行谈判。
rename *englishtranslation *engtrans