SAS - 根据ID列的值将单个列拆分为两个

时间:2017-05-19 19:05:21

标签: sas

我的数据如下。

 double a, n, sumD;
 for (n = a; n > 0; sumD += n % 10, n /= 10);
 int sumI = (int)Math.Floor(sumD);

我想根据性别将data have; input group replicate $ sex $ count; datalines; 1 A F 3 1 A M 2 1 B F 4 1 B M 2 1 C F 4 1 C M 5 2 A F 5 2 A M 4 2 B F 6 2 B M 3 2 C F 2 2 C M 2 3 A F 5 3 A M 1 3 B F 3 3 B M 4 3 C F 3 3 C M 1 ; run; 列分成两个单独的列。

count

这可以通过首先为 count_ count_ Obs group replicate female male 1 1 A 3 2 2 1 B 4 2 3 1 C 4 5 4 2 A 5 4 5 2 B 6 3 6 2 C 2 2 7 3 A 5 1 8 3 B 3 4 9 3 C 3 1 的每个级别创建两个单独的数据集然后执行合并来完成。

sex

是否有一种不那么详细的方法来做这个并不需要排序或显式删除/保留变量?

1 个答案:

答案 0 :(得分:1)

您可以使用$(document).on("click", ".btn.remove" ,function() { name = $(this).attr("name"); console.log(name); }); 执行此操作,但您需要对数据进行排序。我相信这是你正在寻找的东西。

proc transpose

对数据进行排序,现在您有proc sort data=have; by group replicate; run; 进行转置。

by-group

然后你得到:

proc transpose data=have out=want(drop=_name_) prefix=count_;
by group replicate;
id sex;
var count;
run;

proc print data=want;