楼主: bhfly
4718 35

求助,数据的完全组合 [推广有奖]

  • 2关注
  • 1粉丝

已卖:2份资源

本科生

47%

还不是VIP/贵宾

-

威望
0
论坛币
2200 个
通用积分
1.0500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
564 点
帖子
30
精华
0
在线时间
161 小时
注册时间
2011-4-3
最后登录
2023-3-13

楼主
bhfly 发表于 2015-2-6 13:42:02 |AI写论文
80论坛币
各位大神,小女子求助中。
论文需要对数据进行完全组合(???不知道专业怎么称呼)
就是比如 有ABCD三个,组合后变成 AB ,AC,AD, BC,BD, CD
因为数据量很大,没办法手动。
导师说SAS可以处理,
可以自己安装完SAS后默默研究了几天,还是不得要领。
拜托各位大神帮帮忙。
谢过。
附上数据。 组合0206.rar (813.72 KB) 本附件包括:
  • 组合0206.xlsx

说明:第一列是公司代码,第二列是产业年份代码。
需求: 同产业同年份的公司代码进行上述完全组合。(如果有10个,组合后变成45个)

拜托拜托。坐等。

最佳答案

wpfwxn 查看完整内容

数据导入过程省略,直接用sql过程的话,可以这样写: proc sql noprint; create table newdata as select distinct compress(a.code||b.indyear) as newcode from source as b, source as a ; quit; newcode即是你需要的结果
关键词:ABCD ABC 不知道 小女子 论文 小女子 专业

回帖推荐

teqel 发表于33楼  查看完整内容

看了一下数据,终于知道为什么mingfei的几十秒能算出来,别的程序要19个小时了。 1万多行的数据,不知道为什么读进来100万行。 所以在处理之前,要进行数据探索,首先就是看missing和duplicated,不要进行无谓的错误的计算。 第二要心里有素组合之后会有多少组合出现。最多的一个是indyear=232011, 有792种code,会产生792×792/2种组合。最少的有20种,会产生200种组合。

mingfeng07 发表于12楼  查看完整内容

沙发
wpfwxn 发表于 2015-2-6 13:42:03
bhfly 发表于 2015-2-6 14:37
大神。可以帮忙写一下大概的程式吗???感激不尽!
数据导入过程省略,直接用sql过程的话,可以这样写:
proc sql noprint;
    create table newdata as
      select distinct compress(a.code||b.indyear) as newcode
        from source as b, source as a
    ;
quit;

newcode即是你需要的结果

藤椅
wpfwxn 发表于 2015-2-6 14:32:53
用sql过程实现起来比较容易

板凳
wpfwxn 发表于 2015-2-6 14:33:30
学名叫笛卡尔乘积

报纸
bhfly 发表于 2015-2-6 14:37:59
大神。可以帮忙写一下大概的程式吗???感激不尽!

地板
wpfwxn 发表于 2015-2-6 14:38:41
看了下你的数据,比较大,用sql过程估计比较慢,用format可能会快一些

7
bhfly 发表于 2015-2-6 14:39:42
已趴。。。

8
wpfwxn 发表于 2015-2-6 14:56:03
使用data步,结合format,可以参考下面的过程:
ata source;
  set source end = eof;
  obs = _N_;
  if eof then call symputx('num', _N_);
run;


data format;
set source;
length start end label $50;
fmtname = "idf";
type = "N";
length = 32;
start = obs;
end = obs;
label = trim(left(indyear));
output;
run;

proc format cntlin=format;
run;

data newdata;
    set source;
    do i = 1 to &num.;
          newcode = compress(code||put(i, idf.));
          output;
        end;
        keep newcode;
run;

你可以对比一下那种效率高

9
bhfly 发表于 2015-2-6 14:58:16
我试试~~谢谢你!

10
bhfly 发表于 2015-2-6 17:47:52
wpfwxn 发表于 2015-2-6 14:56
使用data步,结合format,可以参考下面的过程:
ata source;
  set source end = eof;
这个方法看不懂。。。能再详细一点吗?
对不起。你面对的真的是一只很菜的菜鸟。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 12:59