sas round 函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sas round 函数相关的知识,希望对你有一定的参考价值。

谁能给我讲下sas 里的round 原理

为什么 round(1234.56789,.1111)=1234.5432
各位还是没解决为什么round(1234.56789,.1111)=1234.5432

一楼的能说详细点么?

round(x,y)的结果是用所有能整除y的数里面最接近x的一个(也就是和x的差的绝对值最小的一个)。

比如 round (789, 100),最接近789的100的倍数是800。

round(1234.56789, .1111)的结果是1234.5432,是所有0.1111的倍数里和1234.56789差最小的(0.02469)。下一个0.1111的倍数是1234.6543,它与1234.56789的差是0.08641。
参考技术A ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。

SAS语言程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过程步用来对数据进行分析、报告。SAS语言的基本单位是语句,每个SAS语句一般由一个关键字(如DATA,PROC,INPUT,CARDS,BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束。SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了赋值、累加、注释、空语句以外都以关键字开头。SAS名字在SAS程序中标识各种SAS成分,如变量、数据集、数据库,等等。SAS 名字由1到8个字母、数字、下划线组成,第一个字符必须是字母或下划线。SAS关键字和SAS 名字都不分大小写。
参考技术B ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。

ROUND 是截取函数
按规定舍入精度取一个数的近似值的函数ROUND;
DATA; 运行结果
a=INT(223.456); b=ROUND(223.456, 100); a=223 b=200
c=ROUND(223.456,10); d=ROUND(223.456,1); c=220 d=223
e=ROUND(223.456,0.1); f=ROUND(223.456,0.01); e=223.5 f=223.46本回答被提问者和网友采纳
参考技术C 1234.56789按照.1111指定的精度四舍五入后的结果 参考技术D SAS是美国使用最为广泛的三大著名统计分析软件(SAS,SPSS和SYSTAT)之一,是目前国际上最为流行的一种大型统计分析系统,被誉为统计分析的标准软件。
SAS为“Statistical Analysis System”的缩写,意为统计分析系统。它于1966年开始研制,1976年由美国SAS软件研究所实现商品化。1985年推出SAS PC微机版本,1987年推出DOS下的SAS6。03版,之后又推出6。04版。以后的版本均可在WINDOWS下运行,目前最高版本为SAS6。12版。SAS集数据存取,管理,分析和展现于一体,为不同的应用领域提供了卓越的数据处理功能。它独特的“多硬件厂商结构”(MVA)支持多种硬件平台,在大,中,小与微型计算机和多种操作系统(如UNIX,MVS WINDOWS 和DOS等)下皆可运行。SAS采用模块式设计,用户可根据需要选择不同的模块组合。它适用于具有不同水平于经验的用户,处学者可以较快掌握其基本操作,熟练者可用于完成各种复杂的数据处理。

目前SAS已在全球100多个国家和地区拥有29000多个客户群,直接用户超过300万人。在我国,国家信息中心,国家统计局,卫生部,中国科学院等都是SAS系统的大用户。SAS以被广泛应用于政府行政管理,科研,教育,生产和金融等不同领域,并且发挥着愈来愈重要的作用。

1. SAS的设计思想

SAS的设计思想是为统计学家和科学工作者提供这样的一个工具,利用它可以完成包括从简单的描述性系统到复杂的多变数分析的各种运算,从而使人们从繁重的计算任务中解脱出来,有更多的时间和精力用于分析和解释计算的结果,而不必为如何获得这些结果花费过多的时间和精力。

2. SAS的功能

SAS是数据管理和分析软件包,能够完成各种统计分析,矩阵运算和绘图等。

SAS的各项功能由功能模块完成。其中BASA模块为必需模块,其它模块可任选。供选择的模块包括统计(STAS),矩阵运算(IML),绘图(GRAPH)和全屏幕操作(FSP)等20余个。

基础模块(BASE),具有以下功能:进行数据存储,调入,追加,拷贝和文件处理;编写报告,打印图表;进行数据排序,分类等操作;完成一些基本统计数计算(如平均数和相关系数);与一些软件包(dBASE,LOTUS等)及大型机进行数据交换和通讯。BASE模块为SAS系统的核心模块。

统计模块(STAT)提供一些高度可靠,完整的统计分析过程。主要有方差分析(包括一元,多元的单因素及多因素实验设计的方差分析),线性相关和回归分析(包括聚类分析,主成份分析,因子分析,典范相关分析)以及非参数测验等,共计26个过程。每个过程还提供多种不同算法和选项,从而SAS系统成为一个全面,细致,科学的统计分析方法集。STAT模块为SAS系统的核心和精华。

矩阵运算模块(IML)是一种交互式矩阵语言。可直接进行矩阵运算(加法,乘法,求逆,计算特征值和特征向量等),适用于高级统计,工程运算和数学分析。

绘图模块(GRAPH)能在微机的绘图设备上绘制图形。可制作三维图形,地图和幻灯等。

全屏幕操作模块(FSP)为一交互式全屏幕软件。利用他可以建立,修改和浏览SAS数据集中的观察值,定义用户屏幕等。

3. SAS的特点

SAS把数据存取,管理,分析和展现有机地融为一体。主要特点如下:

1) 功能强大,统计方法齐,全,新

SAS提供了从基本统计数的计算到各种试验设计的方差分析,相关回归分析以及多变数分析的多种统计分析过程,几乎囊括了所有最新分析方法,其分析技术先进,可靠。分析方法的实现通过过程调用完成。许多过程同时提供了多种算法和选项。例如方差分析中的多重比较,提供了包括LSD,DUNCAN,TUKEY测验在内的10余种方法;回归分析提供了9种自变量选择的方法(如STEPWISE,BACKWARD,FORWARD,RSQUARE等)。回归模型中可以选择是否包括截距,还可以事先指定一些包括在模型中的自变量字组(SUBSET)等。对于中间计算结果,可以全部输出,不输出或选择输出,也可存储到文件中供后续分析过程调用。

2) 使用简便,操作灵活

SAS以一个通用的数据(DATA)步产生数据集,尔后以不同的过程调用完成各种数据分析。其编程语句简洁,短小,通常只需很小的几句语句即可完成一些复杂的运算,得到满意的结果。结果输出以简明的英文给出提示,统计术语规范易懂,具有初步英语和统计基础即可。使用者只要告诉SAS“做什么”,而不必告诉其“怎么做”。同时SAS的设计,使得任何SAS能够“猜”出的东西用户都不必告诉它(即无需设定),并且能自动修正一些小的错误(例如将DATA语句的DATA拼写成DATE,SAS将假设为DATA继续运行,仅在LOG中给出注释说明)。对运行时的错误它尽可能地给出错误原因及改正方法。因而SAS将统计的科学,严谨和准确与便于使用者有机地结合起来,极大地方便了使用者。

3) 提供联机帮助功能

使用过程中按下功能键F1,可随时获得帮助信息,得到简明的操作指导。
参考资料:

在 SAS 中添加两个大数时,为啥结果是荒谬的?

【中文标题】在 SAS 中添加两个大数时,为啥结果是荒谬的?【英文标题】:When adding two large numbers in SAS, why are the results nonsensical?在 SAS 中添加两个大数时,为什么结果是荒谬的? 【发布时间】:2022-01-16 16:12:04 【问题描述】:

下面是一些示例代码:

PROC SQL noprint;
          CREATE TABLE check AS
    
                SELECT *, round(var1,1e16) + round(var2,1e16) as final
    
                FROM dir.A;
    
    QUIT; RUN;

我添加的数字是 -3.0584695E31 和 3.058469E31,总和是 4.5035996E15,但实际上,总和应该在 ~1000 左右。

【问题讨论】:

***.com/questions/588004/… 【参考方案1】:

SAS 中的所有数字都是floating point values,精度约为 16 位。这对应于大多数编程语言和数据库中的"double precision"。

当使用大约 1E31 的值进行计算时,您应该预计会出现大约 1E31/1E16 的误差,即 1E15。

【讨论】:

这对了解绝对有帮助【参考方案2】:

您想要做的是围绕结果。对中间步骤进行四舍五入几乎是无关紧要的——两个四舍五入的数字之间的空间仍然有些模糊,除非它恰好已经是一个精确的差异。在某些情况下您可能看不到太大差异,但在其他情况下您会看到很多差异(尤其是当您期望,例如,两个数字之和为零时)。

PROC SQL noprint;
      CREATE TABLE check AS

            SELECT *, round(var1+var2,1e16) as final

            FROM dir.A;

QUIT;

【讨论】:

以上是关于sas round 函数的主要内容,如果未能解决你的问题,请参考以下文章

请问sas中scan函数如何使用?

sas x=rand;是啥函数

SAS常用函数

SAS学习5(复习一些基本的统计学概念sas中关于统计函数的一些语句)

SAS学习5(复习一些基本的统计学概念sas中关于统计函数的一些语句)

R语言使用haven包的read_spss函数读取spss格式数据使用haven包的read_sas函数读取SAS格式数据使用haven包的read_dta函数读取Stata格式数据