捕获一个ID占用的'paths'个数
Capture the number of 'paths' an ID takes
我有一个数据集,通过列出节点来捕获一个人 'route'。数据如下所示:
data have;
input id node $;
datalines;
1 A
1 B
1 C
2 B
2 C
3 A
3 C
4 A
4 B
4 C
;
run;
我正在尝试捕获 ID 走过的所有不同路线,然后统计出现的次数。示例输出:
Route Count
ABC 2
BC 1
AC 1
使用转置语句来测量停止 1、2、3 等是实现此目的的唯一方法吗?
可能最简单的方法是为每个“路径”构建一个字符串。
data want;
do until(last.id);
set have;
by id;
length route ;
route=cats(route,node);
end;
drop node;
run;
proc freq ;
tables route;
run;
如果节点比单个字母更复杂,那么您可能想要使用 CATX() 来代替在生成的 ROUTE 字符串中在它们之间插入分隔符。当串联的节点看起来像另一个节点时,这将避免潜在的混淆。例如,如果有一个节点 'AB',它看起来与节点 'A' 后跟节点 'B'.
相同
我有一个数据集,通过列出节点来捕获一个人 'route'。数据如下所示:
data have;
input id node $;
datalines;
1 A
1 B
1 C
2 B
2 C
3 A
3 C
4 A
4 B
4 C
;
run;
我正在尝试捕获 ID 走过的所有不同路线,然后统计出现的次数。示例输出:
Route Count
ABC 2
BC 1
AC 1
使用转置语句来测量停止 1、2、3 等是实现此目的的唯一方法吗?
可能最简单的方法是为每个“路径”构建一个字符串。
data want;
do until(last.id);
set have;
by id;
length route ;
route=cats(route,node);
end;
drop node;
run;
proc freq ;
tables route;
run;
如果节点比单个字母更复杂,那么您可能想要使用 CATX() 来代替在生成的 ROUTE 字符串中在它们之间插入分隔符。当串联的节点看起来像另一个节点时,这将避免潜在的混淆。例如,如果有一个节点 'AB',它看起来与节点 'A' 后跟节点 'B'.
相同