How about this? Create test scenario. DATA HAVE; LENGTH VDSID_HHID $40. ITEM_NAME $40.; INFILE DATALINES DELIMITER=","; INPUT VDSID_HHID $ ITEM_NAME $ QUANTITY TOTAL_VALUE; DATALINES; INMHKAL100213000,SORGHUM,66,528 INMHKAL100213000,WHEAT,15,75 INMHKAL100213000,RICE,10,60 INMHKAL100213000,PIGEONPEA,4,119 INMHKAL100213000,CHICKPEA,1,12 INMHKAL100213000,MATKI/COWPEA,1,28 INMHKAL100213000,EDIBLE OIL,4,208 INMHKAL100213000,ALL TYPES OF VEGETABLES,0,115 INMHKAL100213000,ALL TYPES OF FRUITS,0,30 INMHKAL100214000,PDS RICE,10,60 INMHKAL100214000,SORGHUM,165,1155 INMHKAL100214000,WHEAT,20,100 INMHKAL100214000,PIGEONPEA,5,133 INMHKAL100214000,CHICKPEA,2,48 INMHKAL100214000,MATKI/COWPEA,4,94.5 INMHKAL100214000,GROUNDNUT OIL,6,276 INMHKAL100214000,ALL TYPES OF VEGETABLES,0,70 INMHKAL100214000,ALL TYPES OF FRUITS,216,216 RUN; Summarise multiple observations with the same VDSID_HHID and ITEM_NAME. PROC SUMMARY DATA=HAVE NWAY MISSING; CLASS VDSID_HHID ITEM_NAME; VAR QUANTITY TOTAL_VALUE; OUTPUT OUT=HAVESUM (drop = _:) SUM=; RUN; Transpose data to have a single column called COL1 containing the values of both QUANTITY and TOTAL_VALUE and a variable called _NAME_ containing the variable names transposed into COL1. PROC TRANSPOSE DATA=HAVESUM OUT=TRANSPOSE; BY ITEM_NAME VDSID_HHID NOTSORTED; VAR QUANTITY TOTAL_VALUE; RUN; Transpose the data a second time, using the ITEM_NAME and _NAME_ variables in the ID statement to name the created variables in a format similar to what you desired. PROC TRANSPOSE DATA=TRANSPOSE OUT=TRANSPOSE1 (DROP=_NAME_) DELIMITER=_; ID ITEM_NAME _NAME_; VAR COL:; BY VDSID_HHID NOTSORTED; RUN; You can now merge your 2 datasets. You could do something similar in a datastep, however I am sure you know how to create a series of IF ELSE statements. Regards, Scott
... View more