楼主: Tigflanker
1088 1

[问答] 请问如何向后取值进行判断 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2013-12-24 15:31:53 |AI写论文
100论坛币
大家好,问题青年又来了。。。

遇到一个数值处理问题,想问问大家怎么处理比较好,谢谢。

规则:将数据集中的非整数进行向上或向下归类。不过困难的是,判断的时候,需要“向下看”,例如:

  1. data a;
  2.   input subj value;
  3.   cards;
  4.   1 2
  5.   1 2.5
  6.   1 3
  7.   2 2
  8.   2 2.5
  9.   2 4
  10.   ;
  11. run;
复制代码

数据中,例如在对2.5进行判断时候,看它后面的数值,如果2.5后面有(2+1),则2.5取2;
如果2.5后面没有(2+1),则2.5取为(2+1);
故,modify过后,第一个2.5变成2,第二个2.5变成3.

因为要by SUBJ,所以希望能包含一个分组过程。谢谢!!!

最佳答案

wwang111 查看完整内容

是这个意思吗? proc sort data=a out=b; by subj value; run; data _int; set b; by subj value; retain n; if index(put(value,best.),'.')>0 then n=int(value+1); if n=value then do;flag='int';output;end; run; proc sql; create table wanted as select subj,ifn(index(put(value,best.),'.')>0,int(value),value) as value from b where subj in (select distinct subj from _int) union ...
关键词:modify Input value cards card 如何
Bye SAS.
若有缘,能重聚。

沙发
wwang111 发表于 2013-12-24 15:31:54
是这个意思吗?

proc sort data=a out=b;
by subj value;
run;
data _int;
set b;
by subj value;
retain n;
if index(put(value,best.),'.')>0 then n=int(value+1);
if n=value then do;flag='int';output;end;
run;

proc sql;
create table wanted as
select subj,ifn(index(put(value,best.),'.')>0,int(value),value) as value
from b
where subj in (select distinct subj from _int)
union all
select subj,ifn(index(put(value,best.),'.')>0,ceil(value),value) as value
from b
where subj not in (select distinct subj from _int)
order by subj,value;
quit;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 谢先,我理解下程序。。

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

只有一个罗纳尔多

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

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