全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3149 8
2017-08-08
11微信截图_20170808224453.png
请问大家一下,我的数据集如图所示,

我想对第2,4,6,8行最右边4列变量的数值保留2位有效小数。
而对第1,3,5,7,9行,我希望把右边4列变量的数值先全部乘以100,然后保留3位有效小数

请问大家如何实现?可以用数组或者矩阵来实现吗?或者有其他简单方法也可以的!

数据集我也放上来了,谢谢大家!

testdata.zip
大小:(38.54 KB)

 马上下载


二维码

扫码加我 拉你入群

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

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

全部回复
2017-8-8 23:08:36
先根据单双生成不同的数据数据集,然后分别把数据集转置
对于不同的变量进行不同的设置;
最后合成一个数据集
只不过跟现在的区别是,现在的观测成为了变量

(ps一般观测是行,这个变量放在行……看着还是挺别扭的)
二维码

扫码加我 拉你入群

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

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

2017-8-8 23:44:30
Shirleylsr 发表于 2017-8-8 23:08
先根据单双生成不同的数据数据集,然后分别把数据集转置
对于不同的变量进行不同的设置;
最后合成一个数 ...
请问你知道这个能不能拿数组或者矩阵来做吗?你说的这个方法我知道,但是因为行数实在太多了,这么弄不是很方便,只是我截取了9行方便大家讨论test,所以才想问大家能不能用数组或者矩阵来做,这样可能会好弄一些
二维码

扫码加我 拉你入群

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

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

2017-8-9 09:04:16
data test1;
        set test;
        array old[4] _numeric_;
        array new[4] $10.;
        do i=1 to 4;
                if x='t' then new=put(old,10.2);
                else  new=put(old*100,10.3);
        end;
run;
proc print data=test1;
run;

二维码

扫码加我 拉你入群

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

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

2017-8-9 09:25:01
try this:

data wanted;
set test;
array var[4] _numeric_;
array num[4] $10 num1-num4;
if x='t' then do i=1 to 4;
  num=put(var,8.2-l);
end;
else do j=1 to 4;
  num[j]=put(var[j]*100,8.3-l);
end;
keep x num:;
run;
二维码

扫码加我 拉你入群

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

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

2017-8-9 13:38:48
感谢大家!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群