2015-08-17 151 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 - 不客氣 –