在 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()可以读取压缩和未压缩文件,但它也缺乏区分已删除行的支持。
虽然在 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 ;