loops - 循环更新分配
问题描述
我有这样的数据:
Subject Treatment X
1 1 X12
2 2 X12
3 3 X13
4 1 X11
5 2 X13
6 3 X12
7 1 X11
8 2 X12
9 1 X11
10 3 X13
我必须使用变量 Z 来计算 X 的数量,所以 Z11=#of X11's , Z12=#of X12's 等等,但如果 X 和 T 中的最后一个数字相同,那么你在分配中添加一个。
所以 Z11=X11+1 if T=1, Z12=X12+1 If T=2 and Z13=X13+1 if T=3 但是如果最后一个数字和 T 不对应,那么它将保持不变 Z11 =X11,Z12=X12,Z13=13。我正在使用 proc sql 来计算分配,但每次循环通过另一个主题时,我不知道如何添加 1。
proc sql;
create table new1 as select
sum(y="X11")+1 as z11,
sum(y="X12") as z12,
sum(y="X13") as z13
from dynamic;
quit;
任何帮助将不胜感激。
解决方案
我不清楚您到底想要什么,但我会在创建所需变量的数据步骤中执行此操作,然后总结总数。
data have;
input Subject Treatment X $;
datalines;
1 1 X12
2 2 X12
3 3 X13
4 1 X11
5 2 X13
6 3 X12
7 1 X11
8 2 X12
9 1 X11
10 3 X13
;
data have;
set have;
z11 = 0;
z12 = 0;
z13 = 0;
if x="X11" then do;
z11 = z11 + 1;
if Treatment=1 then
z11 = z11+1;
end;
else if x="X12" then do;
z12 = z12 + 1;
if Treatment=2 then
z12 = z12 + 1;
end;
else if x="X13" then do;
z13 = z13 + 1;
if Treatment=3 then
z13 = z13+1;
end;
run;
proc summary data=have;
var z:;
output out=want sum=;
run;
产生:
_TYPE_ _FREQ_ z11 z12 z13 0 10 6 6 5
如果需要,您可以删除_TYPE_
和变量。_FREQ_
推荐阅读
- javascript - 避免在 a 中的每个列系列上显示重复的堆栈标签。高图表
- javascript - JavaScript:如何在播放另一个音频样本时停止和重新启动音频?
- r - 如何在两行同名的情况下正确使用 geom_bar?
- visual-studio-code - Visual Studio Code 未显示子模块的 git 更改
- html - 将两个浮动 div 并排放置时未对齐 (HTML)
- reactjs - 在安装时设置一次订阅,并且每次更新都不刷新它?
- powerbi - Azure 数据工厂管道成功完成后如何执行 Power Automate?
- linux-device-driver - Linux x86 / ACPI 中的 Maxim MAX14830
- python - python random中选择和选择的结果不同?
- python - 将 Dataframe 转换为具有某些条件的列表