楼主: aileendeng
3191 4

[问答] 急求!如何不重复统计一个矩阵里值出现的次数 [推广有奖]

  • 0关注
  • 0粉丝

大专生

61%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
349 点
帖子
32
精华
0
在线时间
33 小时
注册时间
2014-3-12
最后登录
2016-8-19

楼主
aileendeng 发表于 2014-6-4 18:41:35 |AI写论文
5论坛币
数据如下:
code a  b  c  d  e  f
1      x  y      m
1      z      n
1      x          z
2      n                s
2      t  n      s
现在要不重复统计同一个code(例如1)a-f,这6个变量总共出现几种值(例子里则为5,分别为x,y,z,m,n),
输出:
1 5
2 3
应该怎样做?我尝试用proc transpose想把列转成行by code也没有成功。数据量较大。59万行,上万组code。
急求各位大大!
关键词:Transpose Trans code pose COD 如何 统计

沙发
yongyitian 发表于 2014-6-4 18:41:36
  1. /* in the following code, USD = dollar sign */

  2. data long;
  3.    array arr USD a b c d e f;
  4.     set test;
  5.       do over arr;
  6.         a_f = arr;
  7.         output;
  8.       end;
  9.    keep code a_f;
  10. run;

  11. proc sql;
  12.     create table want as
  13.     select code, count(distinct a_f) as n
  14.     from long
  15.     group by code;
  16. quit;
复制代码

藤椅
yuerqieqie 发表于 2014-6-4 21:19:15
如果a, b, c, d, e,f下面都是单个character的话可以用下面的程序实现
  1. proc sort data = test; by code; run;
  2. data result;
  3.         set test; by code;
  4.         format value $200.;
  5.         array dat{*} $ a b c d e f;
  6.         retain cnt value;
  7.         if first.code then do; value = ''; cnt = 0; end;

  8.         do i = 1 to dim(dat);
  9.                 if dat[i] ne '' then do;
  10.                         if index(value, dat[i]) = 0 then do;
  11.                                 cnt + 1;
  12.                                 value = catx(',', value, dat[i]);
  13.                         end;
  14.                 end;
  15.         end;


  16.         if last.code;
  17.         keep code cnt;
  18. run;
复制代码

板凳
aileendeng 发表于 2014-6-5 18:55:44
yuerqieqie 发表于 2014-6-4 21:19
如果a, b, c, d, e,f下面都是单个character的话可以用下面的程序实现
您是说单个字符么?不是,x y  z 什么都是中文姓名。这个代码跑出来是有结果的,但是结果不对呢。。。请问一下跟我的字符长度设定有没有关系呢?a 的长度是$20,b的长度是$8,c-f是$6。是excel导入默认的。

报纸
aileendeng 发表于 2014-6-5 19:12:17
yongyitian 发表于 2014-6-4 22:16
谢谢!明白了,跑出来了。

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

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