1

我有目前看起来像这样的代码:

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 命令?

4

3 回答 3

1

我将回应其他建议 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 的问题表示歉意 :))

于 2013-10-01T23:01:57.767 回答
0

创建一个 id 与 Fname,Lname 的关联数组

103 => JACK,MARTIN
104 => MICHAEL,JOHNSON
...

替换 id => hash{id} ( fname & lname )

这样做的效率将由所使用的编程语言来处理

于 2013-09-30T06:32:32.613 回答
0

您没有解释要添加的字符串来自何处,但通常最好的技术在以下位置进行了解释

http://www.stata.com/support/faqs/data-management/group-characteristics-for-subsets/index.html

于 2013-09-30T07:50:56.613 回答