我的代码目前看起来像这样:
replace fname = "JACK" if id==103
replace lname = "MARTIN" if id==103
replace fname = "MICHAEL" if id==104
replace lname = "JOHNSON" if id==104
它继续这样的多个页面,用名字和姓氏字符串替换ID名称。我想知道是否有一种更有效的方法可以通过使用recode命令来集体进行此操作?
答案 0 :(得分:1)
我会回应其他答案,这些答案表明merge
是最好的方法。
但是如果你绝对必须以项目方式(再次,凌乱)编码行,你可以使用MS Excel“帮助”编写代码来生成replace
命令的长列表(“页面”)。以下是Excel工作表的图片,其中有一个示例,显示了MS Excel公式:
columns:
A B C D
row: 1 last first id code
2 MARTIN JACK 103 ="replace fname=^"&B2&"^ if id=="&C2
您输入,确保在公式计算时(除了插入符号)它看起来像Stata代码,并将D列中的公式复制到列表的末尾。然后将公式生成的D列中的整个Stata代码块复制到do文件中,并进行查找和替换(如果你在其他地方使用插入数据用于数学用途,请小心!!)以便替换所有^用“,最终会生成正确的Stata语法。
(这确实是一种蛮力的方式,并且在您的世代列表中有后续更改的情况下不那么动态。所有 - 提前道歉,回答这里提倡使用Excel的问题:))
答案 1 :(得分:0)
创建ID与Fname,Lname
的关联数组103 => JACK,MARTIN
104 => MICHAEL,JOHNSON
...
替换 id => hash {id}(fname& lname)
这样做的效率将由所使用的编程语言处理
答案 2 :(得分:0)
你没有解释你想要添加的字符串来自哪里,但通常最好的技术解释在
http://www.stata.com/support/faqs/data-management/group-characteristics-for-subsets/index.html