Tag: sas

在PCFILES服务器上使用SAS X Command

我有一些SAS代码写入Excel工作簿中的特定工作表。 其他工作表具有公式,看起来这张表,所以工作簿基本上是一个模板,当我的代码运行时填充。 我希望能够多次运行代码,并且每次运行时都会得到不同版本的模板。 我想最简单的方法来实现这是写出来的模板,然后使用x命令或其他东西复制工作簿,然后重命名它。 SAS是在Linux服务器上,我使用一个PC文件服务器来写入Excel。 如何设置x命令复制文件并在远程服务器上更改其名称?

开始时间和结束时间,频率或百分比

我有一个有开始时间,结束时间,停留时间(结束开始)和#个主题的数据。 我正在创build一个图表,线条,条形或直方图,显示在特定时间有多less个科目。 所以水平轴从00:00到24:00有时间,垂直轴有主题的总数或%。 Start End Subject Stay 01:00 02:00 1 01:00 01:00 01:45 1 00:45 02:00 21:00 1 19:00 03:10 14:10 1 11:00 数据集是巨大的,我正在使用SAS企业指南和Excel创build一个graphics。 我已经尝试过PROC GPLOT,但它不提供我所需要的。 线图和条形图(堆叠)做了同样的事情,但不能。 我不确定是否有更简单的方法来做到这一点。 这是我在SAS EG中使用的代码。 试图在Excel中创build一个堆积条形图。 PROC GPLOT DATA=Input; PLOT Stay * start / AREAS=1 FRAME VAXIS=AXIS1 HAXIS=AXIS2 ; RUN; QUIT; 请帮忙。 谢谢

如何使用模板从sas导出为ex​​cel

proc export data=data1 OUTFILE="place_on_pc\template_SASdata.xlsx" DBMS=EXCEL REPLACE; sheet=input; run; SAS中简单的proc导出代码。 但是,我想使用“template_SASdata.xlsx”文件作为模板,并将我的数据保存在一个全新的文件中,使用与原始Excel模板相同的工作表,但更新了“input”工作表。 input="place_on_pc\template_SASdata.xlsx" output="place_on_pc\data1_SASdata.xlsx" 我如何在我的proc导出中包含这个? 我试图添加 infile = ="place_on_pc\template_SASdata.xlsx" 在我的proc出口,但不起作用。

SAS导出到Excel,无法读回到SAS

[注意:我在下面插入了一行,并添加了关于正在发生的事情的详细说明。 我留下了原来的描述,因为汤姆的答案是基于它的。] 在Win10Pro下使用SAS 9.4(32位)和Excel 2013(32位)。 在SAS中,我使用以下代码在现有工作簿中创build了一个新的Excel工作表: proc export data=sashelp.air file="C:\Users\user1\Desktop\test1.xlsx" dbms=XLSX replace; sheet="AirlineData"; run; 我closures了SAS,在Excel中打开了工作簿,看到了我的原始工作表以及新的AirlineData表,其中包含了期望的数据(标题加上144个数据行)。 到现在为止还挺好。 我closures了Excel,打开了SAS,并执行了以下SAS语句: options validmemname=extend; libname desktop "C:\Users\user1\Desktop\test1.xlsx"; 我打开SAS资源pipe理器并导航到库“桌面”,看到三个工作表: AirlineData AirlineData $ 工作表Sheet1 $ 当我在Sheet1 $上双击时,我看到了原始数据,但是当我双击其他名字时,我看到的都是空表,就像这样: F1 F2 1 2 3 细胞是空的,但有144个观察。 标题行被忽略。 我执行PROC PRINT DATA=desktop.airlinedata并在结果查看器中看到同样的结果:名为F1和F2的variables有144个空观测值。 但是,当我清除libref并执行以下操作时,我得到了一个包含期望数据的SAS数据集(两个variables,144个观测值): proc import datafile="C:\Users\user1\Desktop\test1.xlsx" dbms=xlsx OUT=testit replace; sheet="AirlineData"; run; 所以看来,当我用PROC EXPORT创build工作表时,我无法通过libref来使用工作表。 难道我做错了什么? [新的描述] 简介:问题是在现有工作簿中创build新工作表时,EXCEL和XLSX引擎如何工作。 这两个引擎是否应该互换可能是有争议的,但在我看来,如果SAS正确地创build一个新的工作表,它应该能够用任一引擎读取它。 […]

如何使用PROC EXPORT导出到Excel中的多个选项卡

我在我的项目文件中有一些SAS数据集,我想将它们合并到一个电子表格中 – 每个数据集位于不同的选项卡上。 我在这里find了一个解决scheme: https : //communities.sas.com/thread/58447,但它不适合我。 我使用的代码是: proc export data=work.dod_ltd file='H:\Projects\DOD_Report\Sample.xlsx' dbms=xlsx; sheet='LTD Detail'; proc export data=work.dod_std file='H:\Projects\DOD_Report\Sample.xlsx' dbms=xlsx; sheet='STD Detail'; proc export data=work.dod_life_waiver file='H:\Projects\DOD_Report\Sample.xlsx' dbms=xlsx; sheet='Waiver Detail'; run; 但是,不是添加新的选项卡,而是每个proc导出都覆盖现有的“Sample.xlsx”文件,因此最终只有“放弃详细信息”选项卡。 如何将标签添加到现有的电子表格? 谢谢! 麦克风

SAS,Python,Excel创build不断更新function

我有一个非常大的数据集。 我一直在做SAS; 然而,我很乐意使用Python和excel(只有擅长的细节 – 我从来没有在这里编程)。 每个按时间顺序排列的观察者都有一个识别号码。 在一些行中,我有一个二进制观察值,分别表示由1或0标记的“成功”或“失败”。 我想再添加三列(在每一行包含成功/失败),有成功总数(累计)和失败总数(积累),以及之间的比例他们俩。 这个比例是微不足道的。 然而,我只是不知道如何做前两个。 任何帮助将不胜感激。 谢谢! 作为更新:这是我的数据集的一个想法: ID Success Failure totaSuccess totalFailure ratio 1234 – – – – – 1234 1 0 1 0 1/(1+0) 2345 – – – – – 2345 0 1 0 1 0/(1+0) 1234 0 1 1 1 1/(1+1)

在数字列中导入包含无效字符的数据

数据结构:我有一个数据集,可以读取为Excel或CSV文件。 它具有以下variablestypes:date,时间,数字variables,以及不正确地将字符附加到数字的数字variables – 例如-0.011 *和0.023954029324)(最后的括号在单元格中) – 由于在写入文件的程序中出错。 每个logging之间也有空行,删除所有这些是不现实的,因为我有数百个文件要pipe理。 数据问题:我们已经确定某些值在字符之前是正确的(即只要星号被删除,-0.011就是正确的),而其他的值(如0.023954029324)却是不正确的,应该丢失。 请不要评论这个问题,因为这是我无法控制的,现在我所能做的只是pipe理数据,直到错误被修复,字符值停止写入文件。 问题与SAS: 1)如果我使用PROC IMPORT和Excel文件,SAS使用前八行(20为CSV文件)来确定variables是数字还是字符。 如果括号的星号在前20行内没有出现,SAS说这个variables是数字的,然后让任何后面的单元格丢失字符值。 这在星号的情况下是不好的,因为我想保留数值的数字部分,并在稍后的数据步骤中删除星号。 使用PROC IMPORT导入Excel文件不允许使用GUESSINGROWS选项(因为它具有CSV文件,请参阅下文)。 编辑:此外,MIXED = YES选项不起作用(见下面的评论 – 仍然需要改变SAS使用的行数,对我来说,这意味着这个选项…什么?)。 2)如果我用一个CSV文件使用PROC IMPORT,我可以指定GUESSINGROWS = 32767,所以我非常兴奋,因为它确定了带星号的variables是字符并保持星号。 然而,它很奇怪不再决定括号为variables的variables(因为只要圆括号在前20行中,导入Excel文件时就会这样做),而是删除了字符,并将值舍入到最接近的整数(0.1435980234变为0,1.82149023843变成2等)。 这是过于粗糙的四舍五入 – 我需要保持小数位。 而且,最重要的是,括号现在已经不存在了,所以我不能让相应的单元格丢失。 我不知道是否有办法让SAS不圆和/或维护括号。 对我来说,这是不一致的行为 – 为什么在这种情况下星号而不是括号被认为是一个字符? 另外,当我读取带有PROC IMPORT的Excel文件(如(1)中所述)时,它可以应付括号(如果它们出现在前20行中) – 另一个不一致。 3)如果我使用INFILE,那么 – 我得到一个错误,每个variables我尝试阅读 – 这个过程是如此敏感和不稳定的数据是如何变化(我必须编码解决空白数据线)。 ULTIMATE GOAL(注意这个代码将在一个macros内自动运行,如果有的话): 1)读取datevariables作为date 2)随时间读取时间variables 3)能够识别variables的任何单元格中的variables(即使在20行之后)作为字符variables并保持单元格中的值(即不轮/删除字符)。 这可以通过先验地告诉SAS让一组variables为字符(在我摆脱字符/使单元丢失后我将它们改为数字),或者通过SAS自己识别variablesw /字符。

使用GuessingRows导入2010 Excel文件

我有电子表格与混合数据types的列,即: Column1 13450 67/89 823ad 我希望SAS读取所有条目,以便发现数据是混合的,因此将其全部input为字符格式(否则它可以定义为数字,因此会为非数字值创build缺失条目)。 所以我需要使用PROC IMPORT的'GUESSINGROWS'function。 我可以用.XLS文件做到这一点: PROC IMPORT OUT=importeddata DATAFILE = "C:\User\Example\Excel File.xls" DBMS=XLS REPLACE; SHEET='Input'; GETNAMES=YES; MIXED=YES; GUESSINGROWS=32767; RUN; 但是,这些文件现在被保存为.XLSM文件,因此我需要使用EXCEL的新DBMS。 当这样做时,GUESSINGROWS不再是一个有效的陈述。 有谁知道如何使用GUESSINGROWS语句,而从.xlsm文件导入? 或者另一种方式来定义从.xlsm导入时的inputvariables格式?

SAS:导入Excel列名超过32个字符

我正在使用SAS Enterprise guide中的导入工具来导入excel文件某些列有超过32个字符。 问题是,当这些列被截断,他们最终有相同的名称,因此一些不包括在导入。 一个例子是: thisisacolumnnamewithmorethanthirtytwocharactersEXAMPLE1 thisisacolumnnamewithmorethanthirtytwocharactersEXAMPLE2 这两列的截断版本是 thisisacolumnnamewithmorethanthir

在sas中编写vba代码

我想将我的VBA代码实现到我的SAS代码中,所以我可以一次完成整个过程。 我的SAS代码读取一个大的SAS表,做一些转换,最后导出到一个Excel文件(代码如下)。 我也在Excel文件中写了一些VBA代码(例如一些variables的AutoFiltering,你可以看到下面的代码)。 表格看起来像这样: ABC Var1 Var2 Var3 ——————– 1 1 1 10 15 20 1 1 2 15 20 30 1 2 1 20 30 40 1 2 2 30 40 50 2 1 1 40 50 60 2 1 2 50 60 70 2 2 1 60 70 80 ………….. ………….. 但是, 我想将我的VBA代码实现到我的SAS代码中,所以我可以一次完成整个过程。 […]