我有目前看起来像这样的代码:
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 命令?
我有目前看起来像这样的代码:
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 命令?
我将回应其他建议 amerge
是最好的方法的答案。
但是,如果您绝对必须逐项编码(再次,混乱),您可以replace
使用 MS Excel 生成一个长长的命令列表(“页面”)来“帮助”您编写代码。这是一张带有一个示例的 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-file 中,并进行查找和替换(如果您在其他地方使用插入符号进行数学用途,请注意此处!)以替换所有 ^ with ",最终会生成正确的Stata语法。
(这确实是一种蛮力的方式,并且在您的世代列表发生后续更改的情况下,动态性会降低。所有——提前在这里回答一个提倡使用 Excel 的问题表示歉意 :))
创建一个 id 与 Fname,Lname 的关联数组
103 => JACK,MARTIN
104 => MICHAEL,JOHNSON
...
替换 id => hash{id} ( fname & lname )
这样做的效率将由所使用的编程语言来处理
您没有解释要添加的字符串来自何处,但通常最好的技术在以下位置进行了解释
http://www.stata.com/support/faqs/data-management/group-characteristics-for-subsets/index.html