我必须从SAS数据集中转储数据。我找到了一个名为sas7bdat.py的Python模块,该模块说它可以读取SAS .sas7bdat数据集,并且由于需要其他功能,因此我认为用Python而不是SAS进行项目会更简单明了。但是,交互式Python中的help(sas7bdat)并不是很有用,我能够找到的唯一一个转储数据集的示例如下:

import sas7bdat
from sas7bdat import *
# following line is sas dataset to convert
foo = SAS7BDAT('/support/sas/locked_data.sas7bdat')
#following line is txt file to create
foo.convertFile('/support/textfiles/locked_data.txt','\t')

这不能满足我的要求,因为a)它使用SAS变量名称作为列标题,并且我需要它使用变量标签,并且b)它使用“nan”表示缺少的数值,而我宁愿离开值空白。

谁能指出我有关sas7bdat.py中包含的方法的一些有用文档?我已经搜索了我能想到的关键词的所有排列,但是没有运气。如果不是,可以给我一个或两个使用readColumnAttributes(),readColumnLabels()和/或readColumnNames()的示例吗?

谢谢大家

最佳答案

这只是部分答案,因为我发现没有[易于阅读]具体文档。

您可以查看源代码here

这显示了有关方法需要哪些参数的一些基本信息,例如:

  • readColumnAttributes(self,colattr)
  • readColumnLabels(self,collabs,coltext,colcount)
  • readColumnNames(self,colname,coltext)

  • 我认为,使用SAS7BDAT创建对象时,您追求的大部分内容都存储在返回的“ header ”类中。如果仅打印该类,您将获得很多信息,但是您也可以访问类属性。我认为您可能要查找的大多数内容都在foo.header.cols下。我怀疑您使用各种 header 属性作为您提到的方法的参数。

    也许这样的事情会让您更接近吗?
    from sas7bdat import SAS7BDAT
    foo = SAS7BDAT(inFile) #your file here...
    
    for i in foo.header.cols:
        print '"Atrributes"', i.attr
        print '"Labels"', i.label
        print '"Name"', i.name
    

    编辑:与这个特定的问题无关,但是当试图弄清一个不熟悉的类/库中发生了什么时,type()dir()命令会派上用场

    关于Python sas7bdat模块用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19645852/

    10-09 07:56