楼主: ybhk
1220 9

一个简单的程序 但不知道为什么会出现这样的结果 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

2%

还不是VIP/贵宾

-

威望
0
论坛币
39 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1115 点
帖子
84
精华
0
在线时间
94 小时
注册时间
2012-6-2
最后登录
2017-10-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
分类变量x取值为1 2 3 4 5  根据x计算变量y =100*(X-1)/4;  既 x=1  y=0 ;x=2  y=25;x=3 y=50;x=4 y=75;x=5 y=100; 可是为什么 算出来的y值  会出现y=-2.77556E-15 而且 y=-2.77556E-15 时  x都等于1, 但有些X=1的记录  y是等于0的,求指点
DATA TEMP1;
SET TEMP;
Y=100*(X-1)/4;
RUN;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:一个简单的程序 不知道 Temp Data 分类变量 程序

沙发
舍身卫道 发表于 2015-5-25 16:07:39 |只看作者 |坛友微信交流群
data temp;
input x 8.;
cards;
1
2
3
4
5
;
run;

data temp1;
set temp;
y=100*(x-1)/4;
run;

我测试的为什么没问题,求部分源数据做测试

使用道具

藤椅
ybhk 发表于 2015-5-25 16:20:09 |只看作者 |坛友微信交流群
补充一下 在temp1 里面分别提取x=1  和 y<0的观测 得到的两个数据集分别为data1 和 data2,data1 中有81条记录  而data2 中有20条记录,但是temp1中x=1 的记录 一共是101个记录,不知道这是为什么

使用道具

板凳
ybhk 发表于 2015-5-25 21:55:43 |只看作者 |坛友微信交流群
求回复  求指点

使用道具

报纸
pobel 在职认证  发表于 2015-5-26 07:44:24 |只看作者 |坛友微信交流群
ybhk 发表于 2015-5-25 16:20
补充一下 在temp1 里面分别提取x=1  和 y
Temp1里:
1. 提取x=1,得到data1,有81条记录;
2. “但是temp1中x=1 的记录 一共是101个记录”;
这两个是矛盾的。

你可以看一下变量x是不是应用了什么format。

data _null_;
     set temp1;
     put x= best.  y=;
run;

使用道具

地板
ybhk 发表于 2015-5-26 10:29:16 |只看作者 |坛友微信交流群
pobel 发表于 2015-5-26 07:44
Temp1里:
1. 提取x=1,得到data1,有81条记录;
2. “但是temp1中x=1 的记录 一共是101个记录”;
x没有应用format  是默认的best12.  但是 如果我对 y=-2.77556E-15 的x重新附值x=1 再重新计算y =100*(X-1)/4  y就等于0了 ,为什么

使用道具

7
pobel 在职认证  发表于 2015-5-26 11:20:23 |只看作者 |坛友微信交流群
ybhk 发表于 2015-5-26 10:29
x没有应用format  是默认的best12.  但是 如果我对 y=-2.77556E-15 的x重新附值x=1 再重新计算y =100*(X- ...
应该是X本身的值和1并不是相等吧,也就是(x-1)不等于0

使用道具

8
ybhk 发表于 2015-5-27 09:14:38 |只看作者 |坛友微信交流群
pobel 发表于 2015-5-26 11:20
应该是X本身的值和1并不是相等吧,也就是(x-1)不等于0
恩 (x-1)是不等于0  但是(x-0)等于1  为什么呢?似乎x可以和任何一个数作运算,除了(x-1),"x-2=-1"  "x-0.5=0.5"

使用道具

9
pobel 在职认证  发表于 2015-5-28 07:40:25 |只看作者 |坛友微信交流群
ybhk 发表于 2015-5-27 09:14
恩 (x-1)是不等于0  但是(x-0)等于1  为什么呢?似乎x可以和任何一个数作运算,除了(x-1),"x-2=-1 ...
这个牵涉到数据存储的问题。
无论是数值还是字符,归根到底,在计算机里存储的都是 0 和1的序列。

data a;
    x=0.8+0.1+0.1;
        y=0.7+0.1+0.1+0.1;
        z=1;
        if x=1 then put "X = 1";
        if y=1 then put "y = 1";

    put x= hex16.;
        put y= hex16.;
        put z= hex16.;
run;

使用道具

10
ybhk 发表于 2015-5-28 09:52:02 |只看作者 |坛友微信交流群
pobel 发表于 2015-5-28 07:40
这个牵涉到数据存储的问题。
无论是数值还是字符,归根到底,在计算机里存储的都是 0 和1的序列。
万分感谢

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 18:58