2015-08-17 156 views
1

我正在尝试创建一个新变量,以便它像 1,1,2,2,3,3,4,4 .....这意味着它会重复计算观察结果。 我当前的代码是这样的双重统计观察值的变量

gen newid = _n 
replace newid = newid[_n+1] if mod(newid2,2) == 0 

但这样做的结果出来作为-1,1,3,3,5,5,7,7-,...其中的增量是2的,也就是我只有奇数。我应该如何修改这段代码?

回答

2

您可以尝试将您的ID变量除以2,然后使用Stata的ceil函数将其强制为最接近的整数。

clear 
set obs 50 
gen newid = _n 
gen newid2 = ceil(newid/2) 
+0

谢谢INT(5.2)是5。

。我感谢您的帮助。 –

+0

当然'ceil(_n/2)'也可以。 –

+0

谢谢大家的帮助。 –

0

您可以使用int(x)函数。 该函数返回截断x得到的整数。

因此,如果希望以下图案

1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 

命令是

gen seq = int((_n-1)/2) +1 
+0

由于'int'向下舍入,你必须通过加1.来改变它。口味各不相同,但@ ander2ed的答案中的ceil()解决方案似乎对我更直接。 –

+0

谢谢Dinesh的想法。谢谢 –

+0

@YoungchulVanderbauhauntJoo - 不客气 –