我尝试根据其他行中的值分配值。语法有问题 - 不知道从哪里开始。下面是两个数据集,一个是我开始的,另一个是我想要完成的。
这是我的标准/逻辑:
我必须为Adddnames分配正确的Placement_tactic。
如果缺少Placement_tactic且AddType为= Default
这是我的开始,请注意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
;
答案 0 :(得分:1)
您的数据的“完整故事”不明确 - 如果Placement_tactic
可能同时丢失,AddType ^= Default
可能同时丢失,如果可能没有填充Placement_tactic
对于某个Placement_type
,如果可能有其他AddTypes
缺少Placement_tactic
等等。
到目前为止,您似乎只想将某个Placement_tactic
的已填充Placement_type
值展开到非填充行。可以通过排序然后在DATA-step中保留第一个值来轻松实现:
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;
适用于提供的样本数据。