提示保存用EPPlus创建的文件的更改
我正在使用Epplus v3.1.3创建一系列Excel工作簿.当我打开新创建的文件时,如果我不触摸任何内容,请问我是否要保存更改.如果我说"是",我唯一注意到的更改是app.xml文件略有更改 - 工作簿中没有明显的差异,其余的XML文件是相同的.我尝试了这两种方法: ExcelPackage p = new ExcelPackage(new FileInfo(filename)); p.Save(); 以及 ExcelPackage p = new ExcelPackage(); p.SaveAs(new FileInfo(filename)); 都有相同的问题.有没有办法将app.xml文件输出以其最终形式输出? 这是一个问题的原因是因为我们使用SAS程序将SAS程序用于QC,而当SAS程序打开文件时,由于它们已直接从Epplus程序中输出,因此不会从具有公式的单元格中获取值在他们中.如果打开并为"您想保存更改"选择"是",则可以正常工作.但是,由于我们正
14 2024-04-19
编程技术问答社区
箱形图中作为标签的数值
我有以下数据样本 Y X1 X2 X3 X4 ... 123 121 214 241 241 431 143 141 241 124 214 124 214 142 241 531 432 134 412 124 243 124 134 134 123 我有兴趣使用框图绘制上述数据.具体来说,我想在x轴x1,x2,...以及y轴上包含每列中的值的信息作为框图. 但是,由于我想在视觉上识别,因此相应的y'value(例如,对于最大x1为531),我考虑使用一些标签. 为了创建盒子图,我正在使用 ods graphics off; proc boxplot data=test; plot Y*X; run; 其中x是 X Y X1 121 X1 143 X1 124 X1 432 ... ...
14 2024-04-03
编程技术问答社区
带有更改过的书签的SAS-pdf输出
我的问题如下 - 我有两个数据集,其中我通过宏循环2 * 2图创建了两个数据集.我将这两个图形绘制到PDF文件中,该文件在第1页上具有前两个图,以及第2页. 上的其他图. 输出PDF很好,我唯一想更改的是书签.我希望它们包含有关图形的一些详细信息 - 每个图每个图. 有什么简单的方法如何做到这一点?我通过Proc Report发现了一些复杂的解决方案,但是我当前的代码有什么简单的方法吗? data out_i_a; set sashelp.retail; run; data out_ii_b; set sashelp.retail; run; data y; length saz tef $100; input saz $ tef $; datalines; i a ii b ; run; %macro grafy(); proc sql; select count(*) into: pocet from y; quit; ods _all_ close;
22 2024-04-01
编程技术问答社区
SAS中的大字符字段尺寸
我试图通过SAS ODBC PassThrough从MySQL表中导入一个大斑点字段.该场大于SAS中允许的最大长度.根据SAS 9.2,文档类型字段的最大长度为32K.有没有人在SAS中存储大型角色领域的经验?除了将其分解为较小的子字符串的明显建议外,还有其他建议吗? 谢谢 Rob 解决方案 如果您确实确实需要所有32K数据进行操作,我会将其导入多个列,并在任何需要进行处理时使用数组在这些列上进行迭代. 在更多信息.
22 2024-04-01
编程技术问答社区
通过SAS从ORACLE数据库导入blob
一天中,每个人的美好时光. 在上一周的工作中,我面临一个巨大的问题. 在这里交易: 我需要通过SAS从Oracle数据库下载Exel文件(BLOB). 我正在使用: 第一步我需要从Oracle获取数据.我使用了构造(Blob文件接近100kb): proc sql; connect to oracle; create table SASTBL as select * from connection to oracle ( select dbms_lob.substr(myblobfield,1,32767) as blob_1, dbms_lob.substr(myblobfield,32768,32767) as blob_2, dbms_lob.substr(myblobfield,65535,32767) as blob_3, dbms_lob.substr(myblobfield,97302,32767) as blob_4 from my_tbl; )
16 2024-04-01
编程技术问答社区
使用 R 处理超大 sas7bdat(>300GB)文件
我一直在寻找解决此问题的解决方案,而无需取得任何进展.我正在寻找一种使用R的方法来处理(操纵,过滤等)SAS7BDAT文件,而无需将它们加载到内存,因为它们很大.我尝试了spark.sas7bdat,但是该软件包在当前版本的Spark有一些问题.有办法解决这个问题吗? 我希望有一种方法可以处理多个SAS7BDAT,就好像它们是SQLITE或SQL数据库一样,我可以使用R访问并与RAM上加载整个数据无需将整个数据加载到RAM 谢谢 解决方案 一个不错的新(截至2020-22)用户友好选项,用于使用R中的大型内存数据是duckdb软件包,它是柱状矢量化的查询执行引擎,设计用于分析查询. 它包括一个函数duckdb::duckdb_read_csv,该函数将CSV数据有效地加载到duckdb引擎中而无需将其加载到R中,从而可以对大型内存数据进行快速操作. https://jthomasmasmock.githomasmock.github.io/bigger-d
24 2024-03-30
编程技术问答社区
在批量处理中,对sas数据集进行分区的最快方法是什么?
我有一个大的SAS数据集(1.5m obs,〜250变量),我需要将其分为几个较小的SAS数据集,以进行批处理处理.每个数据集需要包含所有变量,但仅包含obs的一小部分.这样做的最快方法是什么? 解决方案 您可以做以下操作: %macro splitds(inlib=,inds=,splitnum=,outid=); proc sql noprint; select nobs into :nobs from sashelp.vtable where libname=upcase("&inlib") and memname=upcase("&inds"); quit; %put Number of observations in &inlib..&inds.: &nobs; data %do i=1 %to &splitnum.; &outid.&i %end;; set &inds.;
14 2024-03-29
编程技术问答社区
像SAS一样在bash中加入
我想使用公共列在 bash 中加入两个文件.我想保留两个文件中的所有可配对和不可能的线路.不幸的是,使用join我只能从一个文件中保存不可行的字段,例如. join -1 1 -2 2 -a1 -t" ". 我还想保留两个文件中的重复条目(在JOIN列中)的所有配对. IE.如果file1是 X ID1 A B X ID1 C D X ID1 D F X ID2 C x X ID3 F V 和第二个文件是 ID1 DF CF ID1 DS DG ID2 CV DF ID2作为DS ID3 CF CG 结果文件应为: x id1 a b df cf x id1 a b ds dg x id1 c d df df cf x id1 c d ds ds dg X ID1 D F DF CF X ID1 D F DS DG X ID2 C X CV DF X ID2 C X AS DS X ID3 F V CF CG CG CG
14 2024-03-28
编程技术问答社区
如何在Unix/Linux中提取两个括号之间的单词?
我有一个SAS数据集,其中查询列表是一个变量之一.以下是变量值之一: SELECT * FROM ( SELECT Table1 file2.txt file.txt QUEUES QDefinitions Parameters TRAP-Deposit-DSTran.dat.2016-08-07 FROM CS_CASE WHERE ANT_CD='FI_BASE_TENANT')t1 LEFT OUTER JOIN Table2 t2 ON t2.CASE_ID=t1.CASE_ID LEFT OUTER JOIN Table3 t3 ON t3.SERVICE_XID=t1.SERVICE_XID LEFT OUTER JOIN Table4 t4 ON t4.SERVICE_ID=t1.SERVICE_ID WHERE ( t1.CASESTATUs_CD = (NEW) OR t1.CASE_STATUS_CD = (OPEN) ) AND ( t3.SEARC
10 2024-03-22
编程技术问答社区
如何计算SAS Enterprise指南中一个Proc SQL查询中其他列中每个列中每个值的平均值?
我在Proc SQL中有查询,结果为SAS Enterprise指南中的表格: 我的查询: proc sql; create table work.my_table as select ID , COUNTRY , VALUE from library1.table1 ;quit; proc SQL中查询的结果: ID | COUNTRY | VALUE ----|-----------|--------- 111 | FRANCE | 1 222 | GERMANY | 3 333 | FRAMNCE | 2 444 | FRAMCE | 3 555 | GERMANY | 5 我的任务: 我需要修改我的查询,以便再有一个列:" sane_1"每个国家/地区的均值(列:" value")(列:" country") 欲望输出: ID | COUNTRY | VALUE | MEAN_1 ----|-
18 2024-03-21
编程技术问答社区
在SAS中计算移动平均数/stdev?
hye伙计们, 我包括了一个屏幕截图,以帮助澄清我的问题: 我正在尝试计算某种移动平均值和移动标准偏差.问题是我要计算实际值的变异系数(STDEV/AVG).通常,这是通过在过去5年中计算STDEV和AVG来完成的.但是,有时我的数据库中会有观察结果,我没有过去5年的信息(也许只有3、2等).这就是为什么我想要一个可以计算AVG和STDEV的代码,即使整个5年没有信息. 另外,正如您在观察结果中看到的那样,有时我有5年以上的信息,当是这种情况时,我需要某种移动平均水平,这使我可以在过去5年中计算AVG和STDEV.因此,如果一家公司拥有7年的信息,我需要某种代码,可以计算出AVG和STDEV,可以说,1997年(到1991- 1996年),1998年(到1992- 1997年)和1999年(1993- 1998年). ,由于我对SAS命令的不太熟悉(非常粗略),例如: set var if year = i then stdev=stdev(year(i-6
14 2024-03-21
编程技术问答社区
R宏,使用户定义的输入类似于SAS中的%let
我试图在R中自动化一个特定的过程,在R本质上,代码保持不变,但是输入文件导入 - 路径和大多数文件名是相同的一个单词更改 - 更改和某些变量名称更改. 我想对用户定义这些更改进行这些更改:很像%让SAS.我可以在其中调用&. 的值 例如,如果我有此特定的导入代码: Category_sales
22 2024-03-21
编程技术问答社区
在Base SAS中,我怎样才能自动刷新资源管理器?
我很确定这一定是困扰着他人的东西,因此必须有一个解决方案.我编写我的代码并想快速检查数据集,但它不存在.我需要选择窗口,单击视图,然后单击"刷新".我可以使用键盘快捷键,还是可以为我编写的宏? 我知道这很懒惰,但它使我感到困扰. 任何想法都将受到赞赏. J 解决方案 您可以使用以下方式以编程方式进行此操作: dm "next explorer; refresh"; 或将其分配给快捷键(例如F2),如下所示: dm "keydef F2 'next explorer; refresh'"; 如果您只想打开最后一个数据集,也可以将其分配给快捷键: dm "keydef F3 'vt &syslast'"; 如果数据集位于远程位置,则可以根据您的需求进行调整以下(请注意已提交的嵌入式SAS代码): dm 'keydef F4 "submit ''rsubmit; %nrstr(%sysrput lastDS=&syslast;) endr
10 2024-03-21
编程技术问答社区
从Stata导入的 "有标签的 "tibble列中提取标签属性。
应用于Stata文件的Hadley Wickham的haven软件包,返回带有许多类型"标记"列的tibble.您可以使用str(),例如: 看到这些 $ MSACMSZ :Class 'labelled' atomic [1:8491861] NA NA NA NA NA NA NA NA NA NA ... .. ..- attr(*, "label")= chr "metropolitan area size (cmsa/msa)" .. ..- attr(*, "labels")= Named int [1:7] 0 1 2 3 4 5 6 .. .. ..- attr(*, "names")= chr [1:7] "not identified or nonmetropolitan" "100,000 - 249,999" "250,000 - 499,999" "500,000 - 999,999" ... 如果我可以简单地将所有这些标记的向量提取
26 2024-03-19
编程技术问答社区
在.Net中从SAS数据源读取数据
我被要求在ASP.NET应用程序中阅读SAS的一些数据.我有Windows表单应用程序的工作代码.但是,相同的代码在ASP.NET中不起作用,但是我可以尝试.一个具有相同参考文献的干净项目始终失败. 这是我为连接所拥有的: SASWorkspaceManager.WorkspaceManager oWorkspaceManager = new SASWorkspaceManager.WorkspaceManager(); string xmlInfo = ""; SASWorkspaceManager.ServerDef oServerDef = new SASWorkspaceManager.ServerDef(); oServerDef.MachineDNSName = "server"; oServerDef.Protocol = SASWorkspaceManager.Protocols.ProtocolBri
22 2024-03-09
编程技术问答社区
SAS如何有效地创建具有相应数值的变量
我正在尝试完成以下内容. 变量字母具有三个值(a,b,c).我想创建一个变量_2,其值与字母的值相对应(1,2,3). . 我知道我可以使用三个语句来执行此操作. if Letter='a' then Letter_2='1'; if Letter='b' then Letter_2='2'; if Letter='c' then Letter_2='3'; 假设我有15个变量字母的值,而替换为15个相应值.如果语句15次,有没有一种方法可以有效地进行操作? 我是SAS的新手.任何线索都将不胜感激. 丽莎 解决方案 看起来像是格式的应用程序. 首先定义格式. proc format ; value $lookup 'a'='1' 'b'='2' 'c'='3' ; run; 然后使用它重新编码您的变量. data want; set have; letter2 = put(letter,$lookup.); run
22 2024-03-07
编程技术问答社区
SAS仅向ARRAY插入(示例)数据集的第一行
我有点问题.我需要仅插入到数组(示例)第一个数组,最佳字段. 我该怎么做?如果您还要指出列插入列的方式(我将来能够加载选定的列). data have; infile DATALINES dsd missover; input varr1 varr2 varr3; CARDS; 1, 2, 3 2, 3, 4 5, 4 4, 3 9, 4, 1 6, ;run; data want; set have; array L[3] _temporary_ ; if _n_ = 1 then do; do i = 1 to 3; %LET j = i; L[i] = varr&i; /*in this place I have problem*/ put L[i]; end; end; run; 解决方案 您不需要宏,不确定为什么您需要临时数
10 2024-03-07
编程技术问答社区
在宏的do循环中引用数组元素
我可以通过%VIO(Dow=Fri,Hour=8)调用宏VIO而不会出错.现在,我想将调用宏嵌套在do循环中. 这是我尝试过的,但没有运气. %macro trythis; data _null_; array ay[3] $3 ('Fri' 'Sat' 'Sun'); %do i = 1 %to dim(ay); %do j = 1 %to 24; %VIO(ay[&i],&j); %end; %end; run; %mend; %macro VIO(Dow,Hour); data Want&Dow.&Hour; set have(where=(hour="&Hour")); format dow $3.; dow = "&Dow"; run; %mend; 似乎ay[&i]将解决ay[1]不是Fri. 解决方案 您无法以这种方式与宏变量交换数据.宏
10 2024-03-07
编程技术问答社区
SAS中的条件概率表
我正在SAS工作,试图创建有条件的概率表. 表的当前结构为:5列x 10行 - >每个单元格中的值是二进制的. 当前数据表 col1 col2 col3 col4 col5 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 0 0 我想创建一个具有条件概率的表,每列VS其他列. 理想输出 --- col1 col2 col3 col4 col5 col1 1.0 0.3 1.0 0.3 0.7 col2 0.2 1.0 0.3 0.7 0.0 col3 0.7 0.3 1.0 0.3 0.3 col4
6 2024-03-07
编程技术问答社区
在SAS中重置一个临时数组
我声明一个数组后,我想重置其余代码的值. array cutoffs[4] _temporary_ (1 2 3 4); /*works well*/ ... use of the array array cutoffs[3] _temporary_ (3.5 5 7.5); /*Error*/ ... use of the updated array 错误如下: 错误124-185:已定义了变量截止. 这个错误非常明显,但我想知道我如何在不更改名称的情况下重新划分数组(这是最乏味的). 我尝试了一些语法,但一个人找不到,我在Google上也没有看到ressources,也没有在Stackoverflow上看到. 我该怎么做? 编辑:主要目的是我创建了一个函数(带有proc fcmp),该函数将数组作为参数并剪切值(例如R's cut函数).该功能应在许多列上使用,但具有不同的截止,我不想为每一列创建一个数组. 解决方案 您可以一一更改cu
14 2024-03-07
编程技术问答社区