我正在尝试创建一个新变量,以便它像 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)'也可以。 –
谢谢大家的帮助。 –