Stata:用字符串值替换数值的有效方法

时间:2013-09-30 06:27:19

标签: stata

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

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命令来集体进行此操作?

3 个答案:

答案 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