sas - 如何在 SAS 中将观察结果与不同的公共变量相加和组合
问题描述
我正在尝试将数据集的某些观察结果与它们的公共变量的不同值相结合和求和,在这种情况下,我试图结合三个年龄间隔 (85-90)、(91-95)、(95 +) 仅在一个 (85+) 年龄区间内。我们的老师告诉我们,如果我们不创建新变量并使用 proc 方法、制表等方式会更好。
我已经阅读了每个谷歌页面,我能找到的只是一个 proc 意味着按变量组合和求和,但我不需要对整个组求和,只需要对该组的一些观察。
拥有如下数据集:
.
.
.
71 to 75 3
76 to 80 4
81 to 85 2
86 to 90 3
91 to 95 1
95+ 3
我想拥有它
.
.
.
71 to 75 3
76 to 80 4
81 to 85 2
85+ 7
谢谢!
解决方案
创建自定义格式以将现有的文字分类映射到新的分类中。
* A format to map literal agecat strings to broader categories;
proc format ;
value $age_cat_want (default=20)
'86 to 90' = '86+'
'91 to 95' = '86+'
'95+' = '86+'
;
这仅适用于连接类别,创建更粗略的聚合。
例子:
* A format to get you into the pickle you are in;
proc format;
value age_cat_have
71-75 = '71 to 75'
76-80 = '76 to 80'
81-84 = '81 to 85'
86-90 = '86 to 90'
91-95 = '91 to 95'
95-high = '95+'
;
data have;
input age @@;
agecat = put (age, age_cat_have.);
datalines;
71 72 73
76 77 78 79
82 83
87 86 86
94
99 101 113
;
proc freq data=have;
title "Original categories are character literals";
table agecat;
run;
* A format to map literal agecat strings to broader categories;
proc format ;
value $age_cat_want (default=20)
'86 to 90' = '86+'
'91 to 95' = '86+'
'95+' = '86+'
;
proc freq data=have;
title "New age categories via custom format $age_cat_want";
table agecat;
format agecat $age_cat_want.;
run;
注意:现有的文字分类不能显式拆分。您必须对每个类别中的年龄值分布做出假设,并估算可以应用于不同年龄映射格式的特定年龄。
推荐阅读
- tcl - NS2:分配移动节点时出现节点移动错误
- javascript - ReferenceError: localStorage 未定义。在 Nextjs 中使用本地存储
- node.js - 如何通过 nodemailer 和 sendgrid 发送验证链接
- performance - 身份服务器 4 - GetToken 间歇性缓慢
- elasticsearch - 如何使用无痛脚本从 Elasticsearch 文档中的字段中删除特定单词
- javascript - 打字稿/反应传递道具错误'类型不存在......'
- javascript - 来自后端的 HTTP 请求和来自外部的安全 API 密钥?
- python - PyQt5 QThread 进程以退出代码 139 完成(被信号 11 中断:SIGSEGV)
- database - 数据库系统中的备份方法
- reactjs - 如何在蚂蚁设计中关闭第一个模态并打开第二个模态