楼主: abnerfoo
4109 7

[求助]如何替换变量 [推广有奖]

  • 0关注
  • 3粉丝

VIP

已卖:756份资源

讲师

17%

还不是VIP/贵宾

-

威望
0
论坛币
150 个
通用积分
52.2225
学术水平
5 点
热心指数
15 点
信用等级
3 点
经验
3766 点
帖子
225
精华
0
在线时间
427 小时
注册时间
2007-8-14
最后登录
2025-10-17

楼主
abnerfoo 发表于 2009-4-12 22:52:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
 var1 var2 var2 var4 var5
 x 1   
 x 1   
 x 0   
 y 2   
 y 0   
 y 0   
 z 3   
 z 3   
 z 3   

求stata命令:

如何以var1为准,将var2中的值替换为出现频率最高的,比如x中1出现两次,而0出现一次,那么就要将0替换为1.

另外,如何将vart2中的所有值替换为最大或最小值,比如将y中的0全部替换为2.

谢谢大侠指教!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:stata命令 Stata tata VaR ART 变量

回帖推荐

sungmoo 发表于7楼  查看完整内容

以下是引用abnerfoo在2009-4-13 14:13:00的发言:如果出现频数相同,即替换为数值最大的那个值  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

sungmoo 发表于6楼  查看完整内容

以下是引用abnerfoo在2009-4-13 14:13:00的发言:如果出现频数相同,即替换为数值最小的那个值前面那组命令,就是实现这样的功能。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

sungmoo 发表于4楼  查看完整内容

以下是引用abnerfoo在2009-4-12 22:52:00的发言:如何将var2中的所有值替换为最大或最小值,比如将y中的0全部替换为2  bys var1: egen max=max(var2)bys var1: egen min=min(var2)*观察新变量max与min。

sungmoo 发表于3楼  查看完整内容

以下是引用abnerfoo在2009-4-12 22:52:00的发言:如何以var1为准,将var2中的值替换为出现频率最高的,比如x中1出现两次,而0出现一次,那么就要将0替换为1.   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 veblog  金币 +1  金钱 +100  奖励 2009-4-15 9:29:00

arlionn 发表于2楼  查看完整内容

egen var3 = count(var2), by(var1)egen var4 = min(var2), by(var1)egen var4 = max(var2), by(var1)

本帖被以下文库推荐

沙发
arlionn 在职认证  发表于 2009-4-13 08:21:00

egen var3 = count(var2), by(var1)

egen var4 = min(var2), by(var1)

egen var4 = max(var2), by(var1)

藤椅
sungmoo 发表于 2009-4-13 10:12:00
以下是引用abnerfoo在2009-4-12 22:52:00的发言:如何以var1为准,将var2中的值替换为出现频率最高的,比如x中1出现两次,而0出现一次,那么就要将0替换为1.

  
bys var1 var2: egen n=count(var2)
bys var1: egen m=max(n)
replace var2=. if n!=m
bys var1: egen v=min(var2)
replace var2=v
drop n m v


eblog  金币 +1  金钱 +100  奖励 2009-4-15 9:29:00

板凳
sungmoo 发表于 2009-4-13 10:19:00
以下是引用abnerfoo在2009-4-12 22:52:00的发言:如何将var2中的所有值替换为最大或最小值,比如将y中的0全部替换为2

 
bys var1: egen max=max(var2)
bys var1: egen min=min(var2)

*观察新变量max与min。

报纸
abnerfoo 发表于 2009-4-13 14:13:00

谢谢版主!如果出现频数相同,即替换为数值最小的那个值。如按var1, var2按序有5个值:1/1/2/2/3, 如何将这五个值都替换为1呢?或者有可能替换为2.

昨天没考虑到频数相同情况。也许更复杂些,写了半天还是没写出来。只能求高手了,谢谢指教!

地板
sungmoo 发表于 2009-4-13 15:49:00
以下是引用abnerfoo在2009-4-13 14:13:00的发言:如果出现频数相同,即替换为数值最小的那个值

前面那组命令,就是实现这样的功能。

bys var1 var2: egen n=count(var2)
bys var1: egen m=max(n)
replace var2=. if n!=m
bys var1: egen v=min(var2)
replace var2=v
drop n m v

7
sungmoo 发表于 2009-4-13 16:01:00
以下是引用abnerfoo在2009-4-13 14:13:00的发言:如果出现频数相同,即替换为数值最大的那个值

 
bys var1 var2: egen n=count(var2)
bys var1: egen m=max(n)
replace var2=. if n!=m
bys var1: egen v=max(var2)
replace var2=v
drop n m v

8
abnerfoo 发表于 2009-4-13 19:10:00

非常感谢斑竹的热心,感激!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-3 19:31