楼主: nickstick
8455 14

[数据管理求助] 如何运用stata编程实现 a b c d 四个值之间的组合?谢谢! [推广有奖]

11
sungmoo 发表于 2012-3-1 20:09:45
*精简了一下(各符号由空格相隔,以下以7个不同符号为例):
clear
loc w="a b c d e f g"
loc n=wordcount("`w'")
loc m=2^`n'
set ob `m'
g y=""
foreach i of loc w{
loc n=`n'-1
replace y=y+cond(mod(int((_n-1)/2^`n'),2),word("`w'",`n'+1),"")
}
l
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
Stakiny + 3 + 3 + 3 精彩帖子
Sunknownay + 2 + 2 + 2 精彩帖子
h3327156 + 1 + 1 + 1 Stata神人! 膜拜一下!!!

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

12
nickstick 发表于 2012-3-1 21:26:45
谢谢!很是佩服!高人也!

13
lzc5123016 发表于 2015-2-5 17:02:56
sungmoo 发表于 2012-2-29 22:18
本题实际上是在找一个集合的所有子集(空集亦是子集)。元素为n的集合共有2^n个子集。
请问求这个子集大概应该用什么方法。。。或者指令。
会用其他编程语言写,但用stata就比较费力。。。

14
sungmoo 发表于 2015-2-6 12:16:18
*利用二进制数的特点
clear
loc w="a b c d e f g"
loc n=wordcount("`w'")
set ob `=2^`n''
g y=""
forv i=1/`n'{
replace y=y+cond(mod(int((_n-1)/2^(`i'-1)), 2),word("`w'",`i'),"")
}
n l
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
Stakiny + 3 + 3 + 3 精彩帖子
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

15
公子非 发表于 2015-11-25 16:50:27
sungmoo 发表于 2015-2-6 12:16
*利用二进制数的特点
clear
loc w="a b c d e f g"
求教,如果是想实现一组数的全排列呢,比如{1,1,1,0,0,0}

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-22 20:05