楼主: dxystata
991 7

[有偿编程] 50论坛币求助如何得到这样的数据集 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2022-2-17 22:00:53 |AI写论文
50论坛币
  1. data aaa;
  2. input a$ b$ c$ d$ e$ f$;
  3. cards;
  4. aa bb!1 bb!2 bb!a!1 bb!a!2 p
  5. ;
  6. run;
复制代码
微信截图_20220217214902.png

第一行为变量名,每一行相邻变量取值相同只保留第一个,其余用#代替。希望程序能通用,谢谢!
关键词:50论坛币 0论坛币 数据集 论坛币 cards

沙发
learsaas 发表于 2022-2-17 22:00:54
  1. data result1;
  2.         set aaa;
  3.         array array_text{6} a--f;
  4.         array array_temp{6} $8 _TEMPORARY_;
  5.         n=0;
  6.         do i=1 to dim(array_text);
  7.                 array_temp[i]=array_text[i];
  8.                 n=max(n,countc(array_text[i],'!'));
  9.         end;
  10.         do i=1 to n+1;
  11.                 do j=1 to dim(array_text);
  12.                         array_text[j]=scan(array_temp[j],i,'!','M');
  13.                 end;
  14.                 output;
  15.         end;
  16.         drop i j n;
  17. run;
  18. data result2;
  19.         set result1;
  20.         array array_text{6} a--f;
  21.         array array_temp{6} $8 _TEMPORARY_;
  22.         do i=1 to dim(array_text);
  23.                 array_temp[i]=array_text[i];
  24.         end;
  25.         do i=2 to dim(array_text);
  26.                 if array_temp[i]=array_temp[i-1] and strip(array_temp[i])^='' then array_text[i]='#';
  27.         end;
  28.         drop i;
  29. run;
复制代码
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
dxystata + 100 + 2 + 2 + 2 热心帮助其他会员

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

藤椅
dxystata 发表于 2022-2-17 22:09:10
微信截图_20220217220929.png

板凳
乐天天12300 发表于 2022-2-18 14:14:44
proc transpose data=aaa out=bbb;
    var _all_;
run;

proc sql noprint;
    select max(count(col1,"!"))+1 into :count_max from bbb;
quit;

data ccc;
    set bbb;
    array value $ value1-%sysfunc(compress(value&count_max.));
    do i=1 to &count_max.;
        value(i)=scan(col1,i,"!");
        if value(i)=lag1(value(i)) and ^missing(value(i)) then
            value(i)="#";
    end;
    drop i  col1;
run;

proc transpose data=ccc out=ddd(drop=_name_);
    var value1-%sysfunc(compress(value&count_max.));
    id _name_;
run;
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
dxystata + 100 + 2 + 2 + 2 热心帮助其他会员

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

报纸
dxystata 发表于 2022-2-18 15:46:54
乐天天12300 发表于 2022-2-18 14:14
proc transpose data=aaa out=bbb;
    var _all_;
run;
代码有的没显示。

地板
乐天天12300 发表于 2022-2-18 15:48:37
dxystata 发表于 2022-2-18 15:46
代码有的没显示。
这网站$符号容易引起乱码。我把建数据集删掉了,现在好了
已有 1 人评分经验 收起 理由
dxystata + 100 热心帮助其他会员

总评分: 经验 + 100   查看全部评分

7
dxystata 发表于 2022-2-18 20:09:30
learsaas 发表于 2022-2-18 13:53
scan(array_temp[j],i,'!','M')
M是这么意思?

8
dxystata 发表于 2022-2-20 11:02:39
乐天天12300 发表于 2022-2-18 15:48
这网站$符号容易引起乱码。我把建数据集删掉了,现在好了
请以50论坛币出售的形式,我来购买。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 08:22