楼主: lqwoailuo
2588 19

有一个数据集,想改里面的东西怎么操作? [推广有奖]

11
lqwoailuo 发表于 2014-3-11 08:15:47
intheangel 发表于 2014-3-10 21:09
全部改就不需要_n_了呀,
proc data a;
set a;
谢谢。

12
playmore 发表于 2014-3-11 08:57:39
我来一个用IML做的吧
除了语法有差异,具体的做法和Matlab这样的矩阵语言都一样,适合对全数字的dataset进行处理
  1. data have;
  2.         input a b c d;
  3. datalines;
  4. 1 2 3 3
  5. 3 2 4 2
  6. ;
  7. run;

  8. proc iml;
  9.         use have;
  10.         read all VAR {a b c d} into Matrix;
  11.         do i=1 to nrow(Matrix);
  12.                 do j=1 to ncol(Matrix);
  13.                         if Matrix[i,j]=4 then Matrix[i,j]=5;
  14.                 end;
  15.         end;
  16.         create want from Matrix[colname={a b c d}];
  17.         append from Matrix;
  18.         close Matrix;
  19. quit;
复制代码
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

13
lqwoailuo 发表于 2014-3-11 09:00:01
playmore 发表于 2014-3-11 08:57
我来一个用IML做的吧
除了语法有差异,具体的做法和Matlab这样的矩阵语言都一样,适合对全数字的dataset进 ...
好高级,谢谢啊。

14
lqwoailuo 发表于 2014-3-11 09:06:58
playmore 发表于 2014-3-11 08:57
我来一个用IML做的吧
除了语法有差异,具体的做法和Matlab这样的矩阵语言都一样,适合对全数字的dataset进 ...
它运行的时候,提示说语法错误。在do语句那,怎么回事呢,运行不出来。

15
yongyitian 发表于 2014-3-11 09:22:07
  1. data have;
  2.   input a b c d;
  3. datalines;
  4. 1 2 3 3
  5. 3 2 4 2
  6. ;
  7. run;

  8. proc sql;
  9.    update have
  10.    set c=  
  11.    case when a=3 and c=4 then 5
  12.    else c
  13.    end;
  14. quit;

  15. proc print data=have; title 'have'; run; title;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 观点有启发

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

16
playmore 发表于 2014-3-11 09:38:27
lqwoailuo 发表于 2014-3-11 09:06
它运行的时候,提示说语法错误。在do语句那,怎么回事呢,运行不出来。
我这里是9.3,32位版本,运行没问题
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

17
lqwoailuo 发表于 2014-3-11 09:43:09
yongyitian 发表于 2014-3-11 09:22
谢谢。
set c=  
case when a=3 and c=4 then 5
set c= 这句什么意思?
a=3 and c=4 then 5为什么最后只有c那变成5了,而a没变化呢?
不太理解,望赐教。

18
lqwoailuo 发表于 2014-3-11 09:44:33
playmore 发表于 2014-3-11 09:38
我这里是9.3,32位版本,运行没问题
难道版本的问题,我这do语句就标红了,真奇怪。

19
yongyitian 发表于 2014-3-11 10:24:51
set c= 是更新 column c, 给 column c 赋值的意思

a=3 and c=4 是条件语句, 满足此条件 c=5, 不满足条件 c=c (原值)

整条语句相当于 if a=3 and c=4 then c=5;
               else c=c;

没有 a=3, 责将所有 c=4 的值换成 c=5

一般情况 a 当做 id。 指id= 特定值的行.

20
lqwoailuo 发表于 2014-3-11 10:31:42
yongyitian 发表于 2014-3-11 10:24
set c= 是更新 column c, 给 column c 赋值的意思

a=3 and c=4 是条件语句, 满足此条件 c=5, 不满足 ...
说的好详细,看懂了。谢谢您。

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

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