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(即 Day11
到 Day1
)。要容纳 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;
我在线性回归中将一些数据重新排列为 运行 并使用下面的代码进行更改。但是,当我查看新数据集时,新名称不完整。例如 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(即 Day11
到 Day1
)。要容纳 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;