使用SAS格式目录

时间:2017-03-16 13:42:41

标签: sas data-formats

我在SAS收到了一个数据集和格式目录,我试图让它打开,但不知怎的,我没有正确应用格式目录。这是我用过的代码。我已经研究了SAS网站,我认为我有正确的步骤来调用目录,但它没有工作。我确定这是我制作的一个基本错误。

var data = [{
  "country": "Abkhazia",
  "1995": null,
  "1996": null,
  "1997": null,
  "1998": null,
  "1999": null,
  "2000": null
}, {
  "country": "Afghanistan",
  "1995": 49.4,
  "1996": 49.7,
  "1997": 49.5,
  "1998": 48.6,
  "1999": 50,
  "2000": 50.1,
  "2001": 50.4
}, {
  "country": "Angola",
  "1995": 59.4,
  "1996": 59.7,
  "1997": 39.5,
  "1998": 58.6,
  "1999": 60,
  "2000": 60.1,
  "2001": 60.4
}];

function makeScatter(country) {
  var filteredData = data.filter(d => d.country === country);
  countryData = [];
  for (var prop in filteredData[0]) {
    countryData.push({
      year: +prop,
      expect: filteredData[0][prop]
    })
  }
  console.log(countryData)
}

makeScatter("Afghanistan")

对于每个变量,我在日志中收到以下错误:

libname in 'U:/';
libname library 'U:/';

Options fmtsearch = (library.formats_raw); 

data ae;
set in.ae;
format 
    aeactae $AEMGMT.
    AEACTSM $ACTION.
    AEDVIS $VISIT.
    AEENDT DATE11.
    AEINT $AEINT.
    AEIRLOC $INJSITE.
    AEIRMEAS $YESNO.
    AEIRTERM $ISR.
    AEIRVIS $VISIT.
    AEIRYN $YESNO.
    AEOUT $OUTCOME.
    aerel $aerel.
    AESER $YESNO.
    AESTDT DATE11.
    AEYN $YESNO.
    EVTDT DATE11.
    LASTUPD EURDFDT20.;
run;

1 个答案:

答案 0 :(得分:0)

编辑:鉴于新信息,答案会发生变化。我把剩下的留给它以防它有用。

您有格式数据集,而不是格式目录。你需要运行它:

proc format cntlin=in.formats_raw;
quit;

导入格式。这假设它当然是正确创建的 - 它至少应该有fmtnamestartlabel,也可能还有其他一些变量(type,{{1} },hlo很常见。

这会将保存到end数据集的格式导入工作环境。如果要创建永久目录,则应在SAS语句中指定lib=in或存储在何处。

旧答案:

你通常做得对,不过你正在做一些你不需要的事情。

应避免使用

proc format libname。这是人们使用的不知道如何正确使用格式的东西,但它确实不是一个好主意,因为它在格式搜索中特别偏好,如果你有多个格式搜索可能会有问题。 libraryLIBRARY自动位于fmtsearch列表中,除非明确列出,否则将被赋予优先级。但是,当格式目录不是WORK时,这实际上对您没有帮助。

在您的情况下,您应该只定义一次(formats.sas7bcat)然后执行此操作:

in

您将libname in 'U:/'; Options fmtsearch = (in.formats_raw work); 放在那里以确保您的格式目录优先于它。

如果您在该文件夹中有文件work,那么它应该可以工作。如果不这样做,那么您可能还有其他事情(如果文件是formats_raw.sas7bcat,您可能会有cntlin导入的文件。)

这是一个简单的例子:

.sas7bdat

libname temp 'c:\temp'; proc format lib=temp.formats_raw; value YNF 1='Yes' 2='No' ; quit; options fmtsearch=(temp.formats_raw work); data test; x=1; format x YNF.; put x= ynf.; run; 更改为fmtsearch,您会看到它失败(因为(temp work)不存在)。