楼主: 阿娜塔哇
619 5

[问答] sas把变量的format信息应用到作图上 [推广有奖]

  • 0关注
  • 1粉丝

已卖:57份资源

讲师

63%

还不是VIP/贵宾

-

威望
0
论坛币
19268 个
通用积分
5.8285
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2523 点
帖子
113
精华
0
在线时间
956 小时
注册时间
2015-9-20
最后登录
2025-5-16

楼主
阿娜塔哇 学生认证  发表于 2023-6-9 09:43:46 |AI写论文
100论坛币
sas给变量format一个信息之后,在后面把这个变量做为横坐标进行画图,画图里面默认显示的是变量的原始值,如何让坐标显示变量format的值?下图中,1 2 3 4 5是变量的原始值,format之后是1-5 6-10 10-20 20-30 30-40 ,用的是proc sgplot过程,就是怎么让横坐标显示1-5 6-10 10-20 20-30 30-40 ,而不是1 2 3 4 5,谢谢各位大佬。
图片.png

最佳答案

whymath 查看完整内容

若希望借助 SAS 的输出格式来完成,示例如下: 另外,你提到使用字符型的分组值,顺序会出错。sgplot 过程步会根据绘图变量的类型,决定是否对数据重新排序: 变量为数值型,按照从数值小到大的顺序重新排序,再绘制图形; 变量为字符型,不重新排序,按照字符变量的不同取值水平出现的顺序绘制图形; 因此,你可以让 x 轴的变量成为字符型,但是要注意预先处理好排序。
关键词:format FORMA form ORM Mat

回帖推荐

hugebear 发表于5楼  查看完整内容

可以用xaxis的valuesdisplay option。代码如下:

whymath 发表于2楼  查看完整内容

若希望借助 SAS 的输出格式来完成,示例如下: 另外,你提到使用字符型的分组值,顺序会出错。sgplot 过程步会根据绘图变量的类型,决定是否对数据重新排序: 变量为数值型,按照从数值小到大的顺序重新排序,再绘制图形; 变量为字符型,不重新排序,按照字符变量的不同取值水平出现的顺序绘制图形; 因此,你可以让 x 轴的变量成为字符型,但是要注意预先处理好排序。

沙发
whymath 发表于 2023-6-9 09:43:47
若希望借助 SAS 的输出格式来完成,示例如下:
  1. data test;
  2.   input x y;
  3.   datalines;
  4. 1 1
  5. 2 2
  6. 3 3
  7. 4 4
  8. 5 5
  9. ;
  10. run;

  11. proc format;
  12.   value group
  13.   1='1-5'
  14.   2='6-10'
  15.   3='10-20'
  16.   4='20-30'
  17.   5='30-40'
  18.   ;
  19. run;

  20. proc sgplot data=test;
  21.   scatter x=x y=y;
  22.   format x group.;
  23. run;
复制代码

另外,你提到使用字符型的分组值,顺序会出错。sgplot 过程步会根据绘图变量的类型,决定是否对数据重新排序:
变量为数值型,按照从数值小到大的顺序重新排序,再绘制图形;
变量为字符型,不重新排序,按照字符变量的不同取值水平出现的顺序绘制图形;

因此,你可以让 x 轴的变量成为字符型,但是要注意预先处理好排序。

藤椅
阿娜塔哇 学生认证  发表于 2023-6-9 09:45:58
还有就是直接把变量设置成字符,取值1-5 6-10 10-20 20-30 30-40会导致分组求均值的时候,顺序出错

板凳
橙红的果士 学生认证  发表于 2023-6-9 13:32:43
可以在format的值前加上数字和@符号,进行排序

报纸
hugebear 发表于 2023-6-10 00:23:21
可以用xaxis的valuesdisplay option。代码如下:
  1. data test;
  2.     input x y;
  3.     datalines;
  4. 1 1
  5. 2 2
  6. 3 3
  7. 4 4
  8. 5 5
  9. ;
  10. run;
  11. proc sgplot data=test;
  12.     scatter x=x y=y;
  13.     xaxis values=(1 2 3 4 5) valuesdisplay=("1-5" "6-10" "10-20" "20-30" "30-40");
  14. run;
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
whymath + 36 + 36 + 4 + 4 + 4 精彩帖子

总评分: 经验 + 36  论坛币 + 36  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

地板
jg.sas 发表于 2023-6-14 10:20:24
linearopts=(viewmin=-1 viewmax=6 tickvaluesequence=(start=1 end=5 increment=1) tickvalueformat=group.)

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

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