求stata命令:
如何以var1为准,将var2中的值替换为出现频率最高的,比如x中1出现两次,而0出现一次,那么就要将0替换为1.
另外,如何将vart2中的所有值替换为最大或最小值,比如将y中的0全部替换为2.
谢谢大侠指教!
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
egen var3 = count(var2), by(var1)
egen var4 = min(var2), by(var1)
egen var4 = max(var2), by(var1)
bys var1 var2: egen n=count(var2)bys var1: egen m=max(n)replace var2=. if n!=mbys var1: egen v=min(var2)replace var2=vdrop n m v
bys var1: egen max=max(var2)bys var1: egen min=min(var2)
*观察新变量max与min。
谢谢版主!如果出现频数相同,即替换为数值最小的那个值。如按var1, var2按序有5个值:1/1/2/2/3, 如何将这五个值都替换为1呢?或者有可能替换为2.
昨天没考虑到频数相同情况。也许更复杂些,写了半天还是没写出来。只能求高手了,谢谢指教!
前面那组命令,就是实现这样的功能。
bys var1 var2: egen n=count(var2)bys var1: egen m=max(n)replace var2=. if n!=mbys var1: egen v=max(var2)replace var2=vdrop n m v
非常感谢斑竹的热心,感激!