SAS 输出缺少全名的新变量

SAS outputting new variable missing full name

我在线性回归中将一些数据重新排列为 运行 并使用下面的代码进行更改。但是,当我查看新数据集时,新名称不完整。例如 Day11 节目是 Day1,Day14 是 Day1,Day20 是 Day2 等。我的代码在哪里导致了这个问题?

Data EMU116Linear;
Set EMU116;
TumorVolume = Day0; Day = "Day0"; output;
TumorVolume = Day3; Day = "Day3"; output;
TumorVolume = Day7; Day = "Day7"; output;
TumorVolume = Day9; Day = "Day9"; output;
TumorVolume = Day11; Day = "Day11"; output;
TumorVolume = Day14; Day = "Day14"; output;
TumorVolume = Day16; Day = "Day16"; output;
TumorVolume = Day18; Day = "Day18"; output;
TumorVolume = Day21; Day = "Day21"; output;
drop Day0 Day3 Day7 Day9 Day11 Day14 Day16 Day18 Day21 TumorWeightDay21;
Run;

原始数据集

新数据集

SAS 会将字符值截断为变量的指定长度。由于您没有明确指定长度,因此 Day0 的第一个赋值将新 Day 变量的长度指定为 4 个字符。之后,任何为 Day 变量提供的更长的值都将截断为 4(即 Day11Day1)。要容纳 5 个字符并初始化新变量,请使用 length 指令:

Data EMU116Linear;
   Set EMU116;
   length TumorVolume Day ;
   ...
run

但是,根据您的代码和期望的结果,一个更好的减少重复的解决方案可能是 proc_transpose 将您的宽数据重塑为长格式:

proc sort data=EMU116Linear;
    by Treatment Treatment2 TreatCode Mouse;
run;

proc transpose
   data=EMU116Linear
   out=EMU116;    
   by Treatment Treatment2 TreatCode Mouse;       
run;

data EMU116;
   set EMU116;
   rename col1=TumorVolume 
          _name_=Day;
run;