由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 问个比较具体的算法问题
相关主题
请教一个SQL 的问题请帮忙看3道SAS题。
SAS code help问一个简单的SAS问题,多谢
问SAS code怎么写请教个SAS问题
Please help with a SAS macro问个sas问题(包子)
菜鸟问个sas得问题,关于分数组SAS code 求助
问个简单的SAS如何找出某个变量最大之所在的行?sas question ( you bao zi )
问个sql问题问个问题sas proc sort
问个sql的问题吧,搞不出来了.How to Macro it in SAS?
相关话题的讨论汇总
话题: id1话题: group话题: data话题: c1话题: ls
进入Statistics版参与讨论
1 (共1页)
m******f
发帖数: 176
1
我在做一个link group的算法, 前面都做完了,做的也还不错。 但是最后这部分虽然
做出来了,
但是算法时间太长,没办法支持请各位想想办法。
我算出的data是这样的:
group_id id1 ID
1 A B
1 A C
1 A D
2 B A
2 B C
2 B D
3 C B
4 D A
4 D B
大家可以看出这些组我已经编好,而且没有遗漏,但是问题在于怎么删除这些多余的组
。 因为最终都
可以归结为一个组:
group_id id1 ID
1 A B
1 A C
1 A D
或者直接一列
group_id id
1 A
1 B
1 C
1 D
我用的方法占时太多,就是一个macro 每次选第一组,在剩下组中ID2删除第一组的ID
d********h
发帖数: 2048
2
data tmp;
set group1;
x1=min(id1,id);
x2=max(id1,id);
proc sort nodupkey;by x1 x2;
proc print;var x1 x2
m******f
发帖数: 176
3
先谢再试

【在 d********h 的大作中提到】
: data tmp;
: set group1;
: x1=min(id1,id);
: x2=max(id1,id);
: proc sort nodupkey;by x1 x2;
: proc print;var x1 x2

d********h
发帖数: 2048
4
data tmp;
set group1;
id=id;
output;
id=id1;
output;
proc sort nodupkey;by id;
A*******s
发帖数: 3942
5
赞速度。我还在琢磨lz的帖子是啥意思,你就捣鼓出两种解法了。

【在 d********h 的大作中提到】
: data tmp;
: set group1;
: id=id;
: output;
: id=id1;
: output;
: proc sort nodupkey;by id;

m******f
发帖数: 176
6
留步,受我一拜

【在 d********h 的大作中提到】
: data tmp;
: set group1;
: id=id;
: output;
: id=id1;
: output;
: proc sort nodupkey;by id;

m******f
发帖数: 176
7
但是第一个好像还是有重复项

【在 d********h 的大作中提到】
: data tmp;
: set group1;
: id=id;
: output;
: id=id1;
: output;
: proc sort nodupkey;by id;

m******f
发帖数: 176
8
另外我忘了说,这里不是 只有 ABCD 这一个组,
还有别的组 , 比如
B K
B E
B F
E K
等等

【在 m******f 的大作中提到】
: 但是第一个好像还是有重复项
d********h
发帖数: 2048
9
忘了min不能用字符串,
data tmp;
set group1;
if id1>id then do;
x1=id1;x2=id;end;
else do;
x1=id;x2=id1;
end;
proc sort nodupkey;by x1 x2;
proc print;var x1 x2

【在 m******f 的大作中提到】
: 另外我忘了说,这里不是 只有 ABCD 这一个组,
: 还有别的组 , 比如
: B K
: B E
: B F
: E K
: 等等

o****o
发帖数: 8077
10
if all ids are capitalized Char A-to-Z, then it is easy:
*-----------------------;
data yourdata;
input group_id id1 $ ID $;
datalines;
1 A B
1 A C
1 A D
2 B A
2 B C
2 B D
3 C B
4 D A
4 D B
5 B E
5 B K
5 B E
6 B F
7 E K
;
run;
data newdata;
array _C1[65:90] _temporary_;
do i=65 to 90; _C1[i]=0; end;
do until (eof);
相关主题
问个简单的SAS如何找出某个变量最大之所在的行?请帮忙看3道SAS题。
问个sql问题问一个简单的SAS问题,多谢
问个sql的问题吧,搞不出来了.请教个SAS问题
进入Statistics版参与讨论
m******f
发帖数: 176
11
数字型id可以自动转换为num
不过这个结果是
A B
A C
A D
B C <---
B D <---
这两个没有删除啊

【在 d********h 的大作中提到】
: 忘了min不能用字符串,
: data tmp;
: set group1;
: if id1>id then do;
: x1=id1;x2=id;end;
: else do;
: x1=id;x2=id1;
: end;
: proc sort nodupkey;by x1 x2;
: proc print;var x1 x2

w*****e
发帖数: 806
12
牛人现身,,看不太懂code。。。

【在 o****o 的大作中提到】
: if all ids are capitalized Char A-to-Z, then it is easy:
: *-----------------------;
: data yourdata;
: input group_id id1 $ ID $;
: datalines;
: 1 A B
: 1 A C
: 1 A D
: 2 B A
: 2 B C

m******f
发帖数: 176
13
no. all the ids are id like '012345' ,I just use A-Z to describe this
problem easily. Thank you for your code. But I do not understand some
meaning in it. ()_() !

【在 o****o 的大作中提到】
: if all ids are capitalized Char A-to-Z, then it is easy:
: *-----------------------;
: data yourdata;
: input group_id id1 $ ID $;
: datalines;
: 1 A B
: 1 A C
: 1 A D
: 2 B A
: 2 B C

m******f
发帖数: 176
14
不过这个算法很好用,确实到了要的效果。就是不知如果不是 A-Z 的 id 怎么用

【在 o****o 的大作中提到】
: if all ids are capitalized Char A-to-Z, then it is easy:
: *-----------------------;
: data yourdata;
: input group_id id1 $ ID $;
: datalines;
: 1 A B
: 1 A C
: 1 A D
: 2 B A
: 2 B C

o****o
发帖数: 8077
15
那种情况下,一样的思路,字符数字混合的可以考虑作一些编码变换
如果确实是很复杂的,可以用hash表,多几行代码而已

【在 m******f 的大作中提到】
: no. all the ids are id like '012345' ,I just use A-Z to describe this
: problem easily. Thank you for your code. But I do not understand some
: meaning in it. ()_() !

m******f
发帖数: 176
16
Sorry. I can not type Chinese in company. But I still have a question,
how can I realize the same function as rank, if I create a new index for my
id ?

【在 o****o 的大作中提到】
: 那种情况下,一样的思路,字符数字混合的可以考虑作一些编码变换
: 如果确实是很复杂的,可以用hash表,多几行代码而已

D******n
发帖数: 2836
17
i also dont understand lz's question, it must need some contextual knowledge

【在 A*******s 的大作中提到】
: 赞速度。我还在琢磨lz的帖子是啥意思,你就捣鼓出两种解法了。
o****o
发帖数: 8077
18
input(id, best.)

my

【在 m******f 的大作中提到】
: Sorry. I can not type Chinese in company. But I still have a question,
: how can I realize the same function as rank, if I create a new index for my
: id ?

S******y
发帖数: 1123
19
########### Python ############
in_file = 'C:\\_original.txt' #oloolo s example data
f = open(in_file, 'r')
ls =[]
f.next() #skip header
for line in f:
obs, group_id, id1, ID = line.split()
if id1 in ls and ID in ls: #if both already in
pass
else: #if one of them is new
print group_id, id1, ID
ls.append(id1)
ls.append(ID)
ls = list(set(ls)) #dedupe
###################### END ###################
m******f
发帖数: 176
20
不行,id 有的过了18位,不能直接做index, 需要做一个index再 转换
就是不知道怎么实现你那个rank函数的功能, 就是 index=fun(id) 这个fun怎么得
来?

【在 o****o 的大作中提到】
: input(id, best.)
:
: my

o****o
发帖数: 8077
21
build your own hash function
or use the hash table feature in SAS directly

【在 m******f 的大作中提到】
: 不行,id 有的过了18位,不能直接做index, 需要做一个index再 转换
: 就是不知道怎么实现你那个rank函数的功能, 就是 index=fun(id) 这个fun怎么得
: 来?

1 (共1页)
进入Statistics版参与讨论
相关主题
How to Macro it in SAS?菜鸟问个sas得问题,关于分数组
请教SAS ODS to Excel问个简单的SAS如何找出某个变量最大之所在的行?
怎样得到OBS的值?问个sql问题
[合集] 新手首次发贴 SAS 问题急问,谢谢大家的帮助问个sql的问题吧,搞不出来了.
请教一个SQL 的问题请帮忙看3道SAS题。
SAS code help问一个简单的SAS问题,多谢
问SAS code怎么写请教个SAS问题
Please help with a SAS macro问个sas问题(包子)
相关话题的讨论汇总
话题: id1话题: group话题: data话题: c1话题: ls