我正在尝试根据其他行中的值分配值。 语法有问题-不确定从哪里开始。 以下是两个数据集,一个是我开始的,另一个是我要完成的。

这是我的标准/逻辑:

我必须为Adddnames分配正确的Placement_tactic。

如果缺少Placement_tactic并且AddType为= Default

  1. 然后需要查看Placement_Type
  2. 在其他行中查找Placement_Type
  3. 如果已填充Placement_Tactic
  4. 然后将place_tactic设置为与Placement_Type相同

这就是我的开始,请注意Placement_tactic中缺少的值:

data have;
  infile cards missover;
  input AddNAme $16. AddType $9.  Placement_Type $34. Placement_tactic $16. ;
cards; 
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY 
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY 
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY 
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM    
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM    
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM    
300x600DefaultAd Default  ROCKET_FUEL_1H    
300x600DefaultAd Default  ROCKET_FUEL_1H    
300x600DefaultAd Default  ROCKET_FUEL_1H    
RedAdd100        standard AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition
RedAdd100        standard AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition
BlueAdd100       standard AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie
BlueAdd100       standard AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie
SaleAd           standard AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
SaleAd           standard AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
SaleAd           standard ROCKET_FUEL_1H                    PreRoll
SaleAd           standard ROCKET_FUEL_1H                    PreRoll
;

这是我要完成的工作:

data WANT;
  infile cards missover;
  input AddNAme $16. AddType $9.  Placement_Type $34. Placement_tactic $16. ;
cards; 
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition     
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition     
160x600DefaultAd Default  AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition 
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie  
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie  
160x600DefaultAd Default  AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie  
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM            Remarketing     
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
300x600DefaultAd Default  AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
300x600DefaultAd Default  ROCKET_FUEL_1H                    PreRoll 
300x600DefaultAd Default  ROCKET_FUEL_1H                    PreRoll 
300x600DefaultAd Default  ROCKET_FUEL_1H                    PreRoll 
RedAdd100        standard AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition
RedAdd100        standard AOD_1H_BAU_ACQ_DMP_COM_RT_CPM     Acquisition
BlueAdd100       standard AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie
BlueAdd100       standard AD.COM_1H_BAU_ACQ_C2C_BAU_DISPLAY Moblie
SaleAd           standard AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
SaleAd           standard AOD_1H_BAU_ACQ_MLP_CPM            Remarketing
SaleAd           standard ROCKET_FUEL_1H                    PreRoll
SaleAd           standard ROCKET_FUEL_1H                    PreRoll
;

===============>>#1 票数:1

您的数据的“完整的故事”是不明确的-如果它可能是Placement_tactic可能丢失, AddType ^= Default在同一时间,如果可能的话,有没有填充Placement_tactic一定Placement_type ,如果可以有其他AddTypes与缺少Placement_tactic等,等等。

到目前为止,您似乎只想将某个Placement_type填充Placement_tactic值扩展为未填充的行。 通过排序然后在DATA步骤中保留第一个值可以轻松实现:

proc sort data=have ; by Placement_Type descending Placement_Tactic; run;
data want;
     set have;
     retain _tactic;
     by Placement_Type;
     if FIRST.Placement_Type then _tactic=Placement_Tactic;
     else Placement_Tactic=_tactic;
     drop _:;
run;

它适用于提供的样本数据。

  ask by user2270911 translate from so

未解决问题?本站智能推荐: