我正在嘗試創建一個新變量,以便它像 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的,也就是我只有奇數。我應該如何修改這段代碼?
我正在嘗試創建一個新變量,以便它像 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的,也就是我只有奇數。我應該如何修改這段代碼?
您可以嘗試將您的ID變量除以2,然後使用Stata的ceil
函數將其強制爲最接近的整數。
clear
set obs 50
gen newid = _n
gen newid2 = ceil(newid/2)
您可以使用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
由於'int'向下舍入,你必須通過加1.來改變它。口味各不相同,但@ ander2ed的答案中的ceil()解決方案似乎對我更直接。 –
謝謝Dinesh的想法。謝謝 –
@YoungchulVanderbauhauntJoo - 不客氣 –
謝謝INT(5.2)是5。
。我感謝您的幫助。 –
當然'ceil(_n/2)'也可以。 –
謝謝大家的幫助。 –