r语言 - 将带有SAS命令文件的文件导入数据库,需要翻译某些SAS值,输入和格式语句



我已经将一个大的(14gig)csv文件导入到一个R colbycol对象中,经过一些操作后,我打算使用R sqldf包将其从中传输到数据库中。此文件的格式化信息以SAS命令文件的形式提供,用于具有固定宽度字段和记录的相应文件。我从未使用过SAS,也不确定某些命令的含义,我需要这些命令来确保它们描述的数据被正确导入。

我找到的关于值、输入和格式语句的在线文档(URL复制如下)对我下面的三个具体示例没有帮助,可能是因为它们太初级了。如果有人能告诉我这些例子的含义,我将不胜感激

PROC格式:http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002473472.htm

价值陈述:http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p1upn25lbfo6mkn1wncu4dyh9q91.htm

输入语句:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000146292.htm

格式声明:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000178212.htm

第一:在"PROC格式"之后有大量的"value"语句。其中大多数都有一列数字代码,后面跟着简短的描述。这些似乎是R因子的直接类似物,但有一个更灵活的数字内部表示选择,我正在相应地转换它们。然而,它们中的一些有一串数字——显然都是9、0或7。示例转载如下。这些数字串表示什么?在少数情况下,会为缩写指定一个数字。在下面的例子中,我相信"NIU"代表"不在宇宙中"。然而,我不确定这个值声明对变量的其他值意味着什么。

值FTOTVAL_f

0000999999="999999";

值INCTOT_f

00999997="00999997"

9999999 7="9999999 7"

99999999="99999999";

值OFFTOTVAL_f

0000999999="牛"

第二:在单词"input"之后,有一些数字范围,我认为它们代表了文件的另一个固定宽度记录版本中的字符范围。其中一些后面跟着一个附加的".4"或".2"(不在引号中),还有一些没有。这些后缀是什么意思?

第三:命令文件以两种格式的语句结尾,该语句前面不紧跟"PROC"。第一个是一系列变量名,后面是变量名的精确重复,后缀为"_f."(无引号)。第二个是一系列变量名,后面跟一个介于8和18之间的整数,互斥,后面总是一个附加的句点。句号后面通常是一个附加的4。这两种格式声明的意义是什么?

Proc格式是sas中的一个过程,用于创建自定义的用户定义格式。一旦创建了格式,就可以使用format语句将其应用于变量。通常,"格式"可以理解为您在输出屏幕/数据集上看到的内容,而不是其实际值。如果有一个名为month的字段,其值为1到12,则可以将1分配给Jan,将2分配给Feb,依此类推。但是,该值保持为1,2,3…12,但当您使用print命令时,它将显示Jan、Feb。。。根据您在proc格式中给出的值进行Dec。也存在许多内置的SAS格式,例如date9.、mmddyynn.、。,日期11等。格式后面的点是强制性的,如果你偶然错过了它,那么你会得到一个错误。

与日期格式类似,也有小数格式,例如,如果我写一些像format number 9.2;这样的东西,其中数字是一个变量名,那么9.2意味着要显示的数字总数是9,其中2位应该出现在小数之后。

日期的另一个例子可能是

format dob date9.;,它意味着dob列中出现的任何值都应该显示为date9。(ddmmmyyyy),SAS和许多工具(excel、spss)一样,将日期作为数字,所以如果你不应用任何格式,它会显示等效的数字,而不是预期的日期,SAS将1960年1月1日的日期作为起点。

SAS在每一个术语中都非常广泛,格式领域也非常大,有很多内置的SAS格式,或者可能使用用户定义的图片格式等。

我的建议(可以是固执己见):总是为SAS搜索NESUG/SUGI文件来澄清自己,他们写的文件比SAS文档更好。

有关格式的更多信息,您可以阅读此,

http://www2.sas.com/proceedings/sugi27/p056-27.pdf

我试着用简单的英语,但当你阅读一些技术文件时,你会发现SAS和R中的术语不同,会出现一些问题。

希望这能帮助

最新更新