如何在 python 中读取和识别 SAS7BDAT 文件中已删除的观测值

问题描述 投票:0回答:1

在 SAS 中,当观测值被“删除”时,它们并没有从数据集中完全删除,而是被标记为删除。当使用 pandas、pyreadstat 或 sas7bdat 等库将此类 sas7bdat 文件读取到 Python 中时,Python 会读取所有观察结果,包括标记为已删除的观察结果。但是,这些库中没有内置指示器来区分活动观察和删除观察。

因此,我无法确定哪些观测值实际上在 SAS 中标记为已删除并应排除

我的问题:

•   Is there a way to identify deleted observations in a sas7bdat file when loading it into Python?
•   Are there any tools, workarounds, or additional SAS preprocessing steps that can help identify and remove these deleted observations before or during the import process in Python?

任何有关处理这些“已删除”行的指导将不胜感激!

。我尝试过以下方法

1.使用pandas.read_sas():读取整个数据集,包括删除的观测值,没有任何删除的指示。 2.使用pyreadstat:虽然pyreadstat.read_sas7bdat()可以读取压缩和未压缩文件,但它也缺乏区分已删除行的支持。

python sas
1个回答
0
投票

虽然在 SAS 中可以将记录标记为删除,但创建完全删除行的数据集(.sas7bdat 文件)也很常见(根据我的经验更常见)。由于您愿意在 SAS 中处理数据,这可能是最简单的方法。 您可以使用 SAS 中的 PROC CONTENTS 查看数据集中是否有任何被标记为删除的观察结果(记录)。

data class ;
  set sashelp.class ;
run ;

*Mark one record for deletion ;

proc sql ;
  delete from class where name='Mary'
  ;
quit ;

proc contents data=class ;
run ;

*Write a .sas7bdat without the record marked for deletion ;

data class2 ;
  set class ;
run ;

proc contents data=class2 ;
run ;
© www.soinside.com 2019 - 2024. All rights reserved.