SAS 替换所有列中的字符

2024-01-28

我有一个 SAS 数据集,必须导出到 .csv 文件。我有以下两个相互矛盾的要求。

  • 我必须使用分号作为 .csv 文件中的分隔符。

  • 一些字符变量是从公式中手动输入的字符串,因此它们可能包含分号.

我对上述问题的解决方案是转义分号或用逗号替换它。

我怎样才能以一种良好、干净和有效的方式使用例如tranwrd http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000215027.htm在整个数据集上?


我的尝试:

对于每个变量,使用tranwrd(.., ";", ",")函数作用于数据集中的变量。更新数据集并循环所有变量。然而,这自然是一个very即使对于半大型数据集,这样做的效率也很低,因为我必须为每个变量执行一个数据步骤。它的代码相当难看,因为我必须通过几个步骤才能获取变量名称,但效率低下确实是最糟糕的。

data test;
    input w $ c b  d  e $ f $;
    datalines4;
Aaa;; 50 11 1 222 a;s                                        
Bbb 35 12 2 250 qw                                        
Comma, 75 13 3 foo zx                                        
;;;;
run;

* Get the variable names;
proc contents data=test out=vars(keep=name type varnum) order=varnum noprint;
run;
* Sort by variable number;
proc sort data=vars;
    by varnum;
run;

* Put variable names into a space-separated string;
proc sql noprint;
    select compress(name)        
    into :name_list separated by ' '                      
    from vars;
quit;

%let len = %sysfunc(countw(&name_list));


*Initialize loop dataset;
data a;
    set test;
run;

%macro loop;
    %do i = 1 %to &len;
        %let j = %scan(&name_list,&i);

        data a(rename=(v_&j = &j) drop=&j);
            set a;
            v_&j.=compress(tranwrd(&j,";",","));
        run;
    %end;
%mend;
%loop;

我想我可能对你的问题有更优雅的解决方案:

data class;
   set sashelp.class;

   array vars [*] _character_;

   do i = 1 to dim(vars);
      vars[i] = compress(tranwrd(vars[i],"a","X"));
   end;

   drop i;
run;

您可以使用array引用数据集中的所有字符列,然后循环遍历它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAS 替换所有列中的字符 的相关文章

  • SAS 无法识别日期格式

    我有以下字符日期格式 3 1990 4 1990 5 1990 我尝试了以下代码 data work temps set indata newdate input strip Date MMYYSw rename newdate date
  • 为当前的下一行数据编写脚本

    如果我想复制下一行的数据该怎么办 例如 客户 A 于 2015 年 1 月 1 日开始当前行程 下一次行程于 2015 年 1 月 15 日开始 因此 他当前行程的结束日期将为 2015 年 1 月 14 日 即下一次行程开始的前一天 我可
  • 从工具栏提交 SAS 代码或宏

    是否可以将 SAS 脚本或宏分配给 Base SAS 中的工具栏按钮 即 您可以 dm 宏或 sas 脚本吗 当然 这是一种方法 转到工具 gt 自定义 选择自定义选项卡 单击 添加工具 最左边的按钮 命令 一词的正上方 创建一个新的空白按
  • 在SAS中运行程序的热键?

    我知道在 R 中我可以使用 control r 来运行我的程序代码 我想知道 SAS 中是否有等效的热键 如果没有 有没有办法将其 编程 到 SAS 中 运行 提交程序 的默认热键是 F8 键 如果您使用的是 Base SAS 不是 EG
  • 使用 Teradata ODBC 与 Teradata 数据库的 SAS 连接

    我正在尝试连接到 SAS 中的 Teradata 我在机器上设置了 Teradata ODBC 目前我的假设是使用 ODBC 是我访问数据库的唯一方法 这是我的连接命令的语法 库名称 Teradata ODBC dsn dsnname ui
  • 如何根据 SAS Enterprise Guide / PROC SQL 中具有相同前缀的列中的值创建具有适当前缀的 2 个新列?

    我在 SAS Enterprise Guide 中有如下表 ID COUNT COL A COUNT COL B SUM COL A SUM COL B 111 10 10 320 120 222 15 80 500 500 333 1 5
  • 使用宏对数据集中的列按组求和

    我有一个数据集 如下所示 Month Cost Center Account Actual Annual Budget June 53410 Postage 13 234 June 53420 Postage 0 432 June 5343
  • 当我将 SAS 数据集导出到 csv 时;它正在修剪字符中的所有前导空格

    当我将 SAS 数据集导出到 csv 时 它正在修剪字符中的所有前导空格 请帮助我保留 csv 输出中的所有前导空格 使用的语句是 Proc Export Data Globl Mth Sumry OutFile GMUPath 20 Rp
  • SAS列出并存储指定库下的所有表名到表中

    在库 测试 下 我有 5 个数据集 如何列出所有表名称 proc datasets lib work quit run 虽然我想进一步利用这些信息 就像表名一样 Thanks 使用 SQLdictionary tables view pro
  • XPT 到 CSV 的转换? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也许这是错误的地方 但我不太确定该把它放在哪里 我有一个非常大的 XPT 格式的压缩 SAS 文件 我
  • 使用 COMMAw,d 转换数字

    我正在关注SAS 帮助页面 http support sas com documentation cdl en lrdict 64316 HTML default viewer htm a000200667 htm并试图获得与页面底部示例相
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • 使用 SAS 导出到 Excel

    假设我有 2 个 SAS 数据集 test1 sas 和 Test2 sas 现在我想将这2个数据集导出到Excel中 其中Excel文件Sheet1中将有test1 sas数据 Sheet2中将有test2 sas数据 怎么做 从 开始这
  • SAS,按组求和

    我想通过var1计算总和 你能用两种方法来计算吗 SQL 和数据步骤使用 if first var1 data have input var1 var2 var3 datalines 1 a 3 1 a 4 1 a 3 2 b 5 2 b
  • 在新实例中打开 SAS 程序

    我正在尝试找出一种在单击时默认在增强编辑器的新实例中打开 SAS 程序的方法 问题是asked https stackoverflow com questions 4654876 open sas program in new window
  • 将 GMT 日期时间转换为本地日期时间

    我有一个 GMT 时区的日期时间值 如何将其转换为我当地的时区 我希望有一个功能可以实现这一点 请注意 由于是夏季 我不能只添加或减去差异 例如 该函数可以这样工作 data null gmtdatetime 17SEP14 09 42 1
  • SAS 随机采样

    在 SAS 中 我创建了一个程序 该程序将从数据集中随机获取 50 个观测值 并计算观测值的平均值 data subset drop i samplesize samplesize 50 obsleft totobs do i 1 to s
  • SAS Proc SQL 中的列表聚合和组串联

    我有一个数据集 必须根据粒度 FIELD1 和 FIELD2 进行汇总 必须对两个指标字段 METRIC1 和 METRIC2 求和 到目前为止 这似乎是一个简单的 GROUP BY 任务 但我有一个字符串字段 FLAG 也必须通过连接不同
  • 从数据变量生成宏变量的宏函数

    data sample input x datalines one two three macro variable to macvar variable dataset proc sql noprint select variable i
  • 在新窗口中打开 SAS 程序

    目前 当您在 Windows 中双击 SAS 文件时 它将在您已打开的现有 SAS 会话中打开它 有没有办法让它在窗口中单击时会启动一个新的 SAS 窗口 据我所知 SAS 是一个所谓的 单实例 应用程序 因此它的默认行为是在现有会话中打开

随机推荐

  • 音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

    将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5 x 6 x 和 7 0 下正常工作 但现在在 iOS 7 1 下的某
  • 如何在 symfony 中尝试 Catch

    情况 trollCommand php foreach trolltypes as type type Frost RandomBroken Forest try output gt writeln type troll get type
  • Typeahead - 可滚动下拉菜单

    看起来 CSS 不适用于我的 Typeahead 我正在尝试重现可滚动下拉菜单 如下所示https twitter github io typeahead js examples https twitter github io typeah
  • Eclipse Juno 中的全屏编辑器 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有一些插件允许在 Eclipse 中进行全屏编辑 但我找不到可以在 Juno 上安装的插件 有谁知道这样的事情是否存在 例如 当我在市场上搜索 全屏
  • 如何用猪拉丁语组合/连接两个袋子

    我有两个数据集 A uid url B uid url 现在我做了一个cogroup C COGROUP A BY uid B BY uid 我想将 C 更改为 group AS uid DISTINCT A url B url 我的问题是
  • MVC模型布尔显示是或否

    我在 MVC 4 实体框架 4 5 的模型中有一个布尔字段 我想在我的视图中显示该字段 我用这个电话 item isTrue 但我得到的是真还是假 我想在 true 时得到 yes 在 false 时得到 no 请问我该怎么办 在您看来 i
  • PHP 从视频中提取音频

    我需要一种从某些视频中提取音频的方法 用 PHP 我有来自 YouTube 的视频流 所以我真的很喜欢它 如果它是动态流 而不是我必须将其保存到临时目录并在那里处理它 尽管这是可以接受的 谢谢 Isaac Waller编辑 更具体地说 我有
  • 将动画翻译到 Android 中的正确位置

    我在我的应用程序中为图像创建了动画 图像从屏幕中间开始直到左上角 现在我需要确保图像放置在所有设备中的正确位置 左上角 目前 对于不同的设备 它被放置在左上角的不同位置 我该如何解决它 我的代码如下
  • 修改flexdashboard的shinyauthr

    我已经构建了一个使用运行时闪亮的交互式 Flexdashboard 我想创建一个用户身份验证登录模块 页面 我偶然发现保罗 坎贝尔 Paul Campbell 的闪亮作者包 https paul rbind io 2018 11 04 in
  • 对 Java 8 可选* 值的操作。

    Java 8 有许多可选类 例如OptionalDouble OptionalInt OptionalLong 有没有一种使用同类可选值的好方法 也就是说 我希望能够做到 OptionalDouble d1 OptionalDouble o
  • 列出有关 SQL Server 中所有数据库文件的信息

    是否可以列出 SQL Server 上所有数据库的文件 MDF LDF 信息 我想获得一个列表 显示哪个数据库正在使用本地磁盘上的哪些文件 我尝试过的 exec sp databases所有数据库 select from sys datab
  • 如何去除图像中的小颗粒背景噪声?

    我正在尝试从我拥有的图像中消除渐变背景噪音 我尝试了很多方法cv2没有成功 首先将图像转换为灰度 使其失去一些可能有助于找到轮廓的梯度 有人知道处理这种背景的方法吗 我什至尝试从角落取样并应用某种内核过滤器 消除梯度的一种方法是使用cv2
  • 如何导航到同级路线?

    假设我有这个路由器配置 export const EmployeeRoutes path sales component SalesComponent path contacts component ContactsComponent 并已
  • 开发 Eclipse RCP 应用程序

    这是我第一次使用 Eclipse 3 8 开发 RCP 应用程序 我的问题可能看起来很奇怪 但对我来说确实很困惑 我可以在哪里放置应用程序的代码 如果我为我的应用程序创建所需的类 我可以在哪里使用它们的对象 在里面Application j
  • 将一系列图像从 java 应用程序传输到 ffmpeg 子进程

    我正在寻找一种将一系列图像 jpeg 从java应用程序流式传输到FFMpeg STDIN管道的方法 FFMpeg 应该处理这些图像并创建一个视频文件作为输出 FFMpeg 作为 java 应用程序的子进程执行 使用以下命令 ffmpeg
  • 使用 PHP/MySQL 日期查询向 Google 可视化页面提交表单

    我使用从 PHP MySQL 提取的数据在谷歌可视化上创建饼图 该图表看起来不错 但我想添加一个日历 日期选择器 以使饼图动态化 我的日期范围选择器似乎正在工作 它从我的数据库中提取正确的数据 选择日期 提交查询后 它返回此字符串 over
  • 如何知道节点是 Virtual TreeView 中的根节点?

    我正在使用虚拟树视图 有没有可靠的方法来知道节点是否是根节点 我尝试使用 if not Assigned Node Parent then Output This is root else Output This is not root 但
  • 在表格布局中显示动态行的问题:Android

    我想以表格布局显示数据 数据数量是动态的 所以我需要在表中实现动态行 为此 我想在一行中显示 4 个 TextView Problem 目前 我能够在表中和四个 TextView 中显示数据 但我希望所有四个 EditText 之间有一些空
  • 在不使用排序功能的情况下按某个元素对嵌套列表进行排序。

    如果我有一个像这样的嵌套列表 L James 1 2 Alan 1 1 Henry 1 5 如何在不使用排序或排序函数的情况下根据每个子列表中的最后一个数字从最高到最低对它进行排序 Output final Henry 1 5 James
  • SAS 替换所有列中的字符

    我有一个 SAS 数据集 必须导出到 csv 文件 我有以下两个相互矛盾的要求 我必须使用分号作为 csv 文件中的分隔符 一些字符变量是从公式中手动输入的字符串 因此它们可能包含分号 我对上述问题的解决方案是转义分号或用逗号替换它 我怎样