I want to transpose a dataset (Visits) from wide format to long with a generated variable (visitCD). Downstream to the transposition, I need to combine the dataset with a second dataset using merge by visitCD. In the merge procedure, I keep getting the following warning. WARNING: Multiple lengths were specified for the variable VisitCD by input data set(s). This can cause truncation of data. This is because visitCD defaults to a length of 8 when generated (despite all values are 3 characters long) and in the second dataset the variable was destinated to $CHAR3 from import. Although this is just a warning, I feel this is a "controllable" behaviour and would like to avoid it. Is it possible to specify a smaller length for the generated variable in the transpose proc? I have read through the document, unless I have missed something, it doesn't document any way to control data specification in the procedure. I suppose it is probably possible to handle this using data step statements, but this seems to be a trivial task to have to resort to that. Much appreciated to anyone who can enlighten me on this. Dataset DATA Visits;
INFILE datalines DLM='09'x;
LENGTH
SUBJID $ 8
V00 3
V01 3
V02 3
V03 3
V04 3
V05 3
V06 3
;
KEEP SUBJID V00 V01 V02 V03 V04 V05 V06;
FORMAT
SUBJID $CHAR8.
V00 BEST1.
V01 BEST1.
V02 BEST1.
V03 BEST1.
V04 BEST1.
V05 BEST1.
V06 BEST1.
;
INFORMAT
SUBJID $CHAR8.
V00 BEST1.
V01 BEST1.
V02 BEST1.
V03 BEST1.
V04 BEST1.
V05 BEST1.
V06 BEST1.
;
INPUT
SUBJID : $CHAR8.
V00 : BEST1.
V01 : BEST1.
V02 : BEST1.
V03 : BEST1.
V04 : BEST1.
V05 : BEST1.
V06 : BEST1.
;
Datalines;
S01-01 1 1 1 1 1 1 1
S01-02 1 1 1 1 0 1 1
S01-03 1 0 1 1 1 1 1
S02-01 1 1 1 0 1 1 0
S02-02 1 1 1 1 0 1 1
S02-03 1 1 0 1 1 1 1
;
RUN; Procedure PROC SORT data=Visits; by SUBJID;
PROC TRANSPOSE data=Visits out=Visits(RENAME=(Col1=Attn)) name=VisitCD;
BY SUBJID;
VAR V00 V01 V02 V03 V04 V05 V06;
RUN;
PROC SORT data=Visits; by VisitCD; RUN;
... View more