SAS合并数据集时RETAIN的作用及Python等效实现
SAS代码中RETAIN语句的作用及Python等效实现
关于RETAIN语句的作用
在SAS的DATA步中,默认每次处理新观测时,所有变量会被重置为缺失值。RETAIN语句的核心作用是让指定变量在DATA步的循环迭代之间保留上一次的取值,不会被自动重置。
但你这段代码里的RETAIN UEN UEN_NO FEE属于冗余代码,没有实际效果。因为SET DF_ADJ1 DF_ADJ2是按顺序读取两个数据集的每一条观测,每次读取新观测时,这三个变量会被新观测的对应值直接覆盖,完全没机会用到上一次保留的值,所以去掉RETAIN后结果完全一致。
Python等效实现
这段SAS代码的核心逻辑是合并两个数据集并保留指定列,用Pandas实现的代码如下:
import pandas as pd # 假设DF_ADJ1和DF_ADJ2是已加载的Pandas DataFrame df_final = pd.concat([DF_ADJ1, DF_ADJ2], ignore_index=True)[['UEN', 'UEN_NO', 'FEE']]
pd.concat([DF_ADJ1, DF_ADJ2], ignore_index=True):按行合并两个DataFrame,ignore_index=True重置索引,和SAS默认生成连续观测编号的逻辑对齐。[['UEN', 'UEN_NO', 'FEE']]:筛选保留目标列,对应SAS的KEEP语句。
内容的提问来源于stack exchange,提问作者stranger12309
相关产品推荐
相关产品推荐

