sas - Sas - 如何创建一个变量,其值为标志的名称等于 1
问题描述
我需要用 Sas 做以下事情。
我有一个这样的数据集;
ID flg_1 flg_2 flg_3 ... flg_200
1 0 1 0 ... 1
2 1 0 0 ... 0
3 0 0 1 ... 0
4 1 1 1 .... 0
....
我想创建一个标志名称等于 1 的新列。我的意思是:
ID flg_1 flg_2 flg_3 ... flg_200 NEW_VAR
1 0 1 0 ... 1 flg_2-flg_200
2 1 0 0 ... 0 flg_1
3 0 0 1 ... 0 flg_3
4 1 1 1 .... 0 flg_1-flg_2-flg_3
....
你可以帮帮我吗?谢谢
解决方案
使用基于变量的数组来迭代标志并vname
检索变量名称。
例子:
/* make sure the accumulator variable named 'flagged' is wide
* enough accommodate the case of all variables being flagged.
*/
data want;
set have;
attrib flagged length=$1600 label='List of variables that were flagged';
array flags flg_1-flg_200;
do _n_ = 1 to dim(flags);
if flags(_n_) then flagged = catx(',', flagged, vname(flags(_n_)));
end;
run;
推荐阅读
- php - Php Mysql 列值不在逗号分隔的字符串中
- vue.js - 图像未在 vue js 中加载
- python - 使用递归在字符串中添加字符和空格
- opencv3.0 - 是否可以使用 cv2.Videocapture 在 Ubuntu 18.04 上访问大于 7 索引的视频设备?
- javascript - 如何按日期属性仅对对象数组中的少数元素进行排序
- kubernetes - NAT 证书后面的 K8s 集群
- python - Python Dataframe GroupBy下替换原方式的方式
- c++ - 如何使用 print() 打印链表
- node.js - Vue 应用程序无法连接到 Docker Redis
- delphi - 检查是否启用了 GDI 缩放 (Delphi)