SAS proc转置而不需要对数据进行排序
SAS proc transpose without needing to sort the data
我正在尝试做一个相对基本的 [proc transpose] 但是我遇到的问题是函数期望的是期望数据被排序。这对于我正在使用的其中一个变量来说很好,但是我无法对另一个变量进行排序。我正在处理的数据如下所示;
data have;
input SESSION $ Activity $;
datalines;
AAAA Activity1
AAAA Activity1
AAAA Action1
AAAA Action1
AAAA Activity2
AAAA Activity2
AAAA Action1
BBBB Action1
BBBB Action3
BBBB Action3
BBBB Activity2
BBBB Activity2
CCCC Activity1
CCCC Activity1
CCCC Action2
CCCC Action2
CCCC Action4
CCCC Action1
CCCC Activity1
;
run;
不过,我正在尝试使数据看起来像这样,以便对于每个会话,不同的 actions/activities 水平移动;
data have;
input Session $ Label $ Part"x" $;
datalines;
AAAA Journey Activity1 Activity1 Action1 Action1 Activity2 Activity2 Action1
BBBB Journey Action1 Action3 Activity2 Activity2
CCCC Journey Activity1 Activity1 Action2 Action2 Action4 Action1 Activity1
我一直在研究以下代码,但是 [proc transpose] 函数需要对数据进行排序,而 'Activity' 在这种情况下不能。我想我需要使用 [notsorted] 函数,但我不知道把它放在哪里。虽然我知道这是不正确的,但我有以下内容;
proc sort data=custs.tenmay_pre_transpose
out=custs.tenmay_trans_srt ;
by SESSIONID Activty_Category notsorted;
run;
proc transpose data=custs.tenmay_trans_srt
out= custs.tenmay_traspose
name=Journey;
by SESSIONID;
run;
Activity
不需要排序。只有 by
个变量需要排序。
proc sort data=have;
by session;
run;
proc transpose data=have
out= want
name=Journey;
by SESSION;
var activity;
run;
我认为这可以满足您的需求(我不确定 Journey
应该放在什么位置,但我按照代码中的方式保留了它 - 它是存储转置变量名称的变量)。
我正在尝试做一个相对基本的 [proc transpose] 但是我遇到的问题是函数期望的是期望数据被排序。这对于我正在使用的其中一个变量来说很好,但是我无法对另一个变量进行排序。我正在处理的数据如下所示;
data have;
input SESSION $ Activity $;
datalines;
AAAA Activity1
AAAA Activity1
AAAA Action1
AAAA Action1
AAAA Activity2
AAAA Activity2
AAAA Action1
BBBB Action1
BBBB Action3
BBBB Action3
BBBB Activity2
BBBB Activity2
CCCC Activity1
CCCC Activity1
CCCC Action2
CCCC Action2
CCCC Action4
CCCC Action1
CCCC Activity1
;
run;
不过,我正在尝试使数据看起来像这样,以便对于每个会话,不同的 actions/activities 水平移动;
data have;
input Session $ Label $ Part"x" $;
datalines;
AAAA Journey Activity1 Activity1 Action1 Action1 Activity2 Activity2 Action1
BBBB Journey Action1 Action3 Activity2 Activity2
CCCC Journey Activity1 Activity1 Action2 Action2 Action4 Action1 Activity1
我一直在研究以下代码,但是 [proc transpose] 函数需要对数据进行排序,而 'Activity' 在这种情况下不能。我想我需要使用 [notsorted] 函数,但我不知道把它放在哪里。虽然我知道这是不正确的,但我有以下内容;
proc sort data=custs.tenmay_pre_transpose
out=custs.tenmay_trans_srt ;
by SESSIONID Activty_Category notsorted;
run;
proc transpose data=custs.tenmay_trans_srt
out= custs.tenmay_traspose
name=Journey;
by SESSIONID;
run;
Activity
不需要排序。只有 by
个变量需要排序。
proc sort data=have;
by session;
run;
proc transpose data=have
out= want
name=Journey;
by SESSION;
var activity;
run;
我认为这可以满足您的需求(我不确定 Journey
应该放在什么位置,但我按照代码中的方式保留了它 - 它是存储转置变量名称的变量)。