标签: sas

使用ggplot2错误绘制形状文件

在过去的几天里,我几乎首先使用R进行映射.我已广泛使用R进行建模等,但之前没有这种工作.我有一些关于shapefile的问题和问题,如何阅读等等.

我已经从澳大利亚统计局下载了形状文件,有许多文件,包括州边界,邮政编码,城市等.形状文件很大,澳大利亚国家边界有大约180万个坐标点,我试过的另一个文件是统计区域,其中有超过800万个.我没有对这个文件做任何事情,因为它对我的R设置来说太大了.

我在里面读了形状文件readShapePoly并将其转换成如此

AUS@data$id = rownames(AUS@data)    
AUS.points = fortify(AUS, region="id")
AUS.df = join(AUS.points, AUS@data, by="id")
Run Code Online (Sandbox Code Playgroud)

一旦我将状态边界形状文件转换SpatialPolygonsDataFrame为常规数据帧,我就成功地绘制了它,但它花了很长时间,细节太大了.我想用thinnedSpatialPoly它来简化它,但它给出了错误:

Error in stopifnot(length(Sr@polygons) == nrow(data)) :trying to get slot "polygons" from an object of a basic class ("NULL") with no slots
Run Code Online (Sandbox Code Playgroud)

哪个谷歌无法帮助我.

我的下一个策略是将其读入SAS并使用proc greduce获取文件并创建密度字段,您可以选择多边形的密度.

proc mapimport out=states datafile='\Digital Boundaries\States\Shape file\STE_2011_AUST.shp';
id ste_code11;    run;
proc greduce data = states out = reduced_states;
id ste_code11;    run;
Run Code Online (Sandbox Code Playgroud)

SAS有垃圾图形,甚至无法为我绘制图形,所以我导出了数据集并用新的密度字段将其读回到R中,我希望将数据框子集化并在我的图中使用.

我现在的问题是,当我去R的情节时,我得到了这个澳大利亚国家边界地图

ggplot(data=states.df, aes(X, Y, group=SEGMENT)) + 
geom_polygon(colour='black', fill='white') + …
Run Code Online (Sandbox Code Playgroud)

r sas ggplot2

8
推荐指数
1
解决办法
2349
查看次数

Sublime中的SAS语法突出显示

我希望能够使用Sublime 3作为我的SAS文本编辑器,但似乎无法配置Sublime这样做.我访问过http://implementing-vdw.blogspot.com/2012/10/new-sublime-text-package-available-for.html并且无法在Sublime中实际使用SAS语法高亮显示.

这是我做的,我没有/知道github,所以我按照说明下载了zip文件,并将其内容放在C:\ Program Files\Sublime Text 3\Packages\SAS中.我关闭了sublime并重新打开,但没有看到SAS作为可用的语法.

我确定我需要再做一两步但我不知道是什么.

syntax-highlighting sas sublimetext3

8
推荐指数
1
解决办法
5489
查看次数

SAS可以向后进行sas过程观察

我知道Sas在处理时从数据集顶部的观察开始,然后进入下一个直到它到达底部观察,但是有一种简单的方法可以使sas处理首先进行底部观察然后再进入顶部?

sas

7
推荐指数
2
解决办法
5829
查看次数

sas informat datetime

任何人都可以建议相应的SAS信息在日期时间读取(年/月/年/小时:mm)???

例如

data _null_;
informat from_dt datetime????.;
input from_dt ;
put from_dt=;
cards;
01/01/1960 00:00
;run;
Run Code Online (Sandbox Code Playgroud)

datetime sas informat

7
推荐指数
3
解决办法
7467
查看次数

SAS在sql server 2005中读取位数据类型

我有一个sql server 2005数据库,其中包含一个数据类型为bit的列.当我查看sql server management studio中的数据时,我看到列值为0或1,当我用SAS拉动时我看到0或-1,就像SAS正在否定1值.有人对此有解释吗?谢谢.

sql-server-2005 sas

7
推荐指数
1
解决办法
1166
查看次数

如何在SAS中填充字符字段?

我正在从包含VARCHAR(5)密钥字段的数据库创建SAS数据集.

此字段包括一些使用全部5个字符的条目和一些使用较少字符的条目.

当我导入这些数据时,我宁愿填写所有较短的条目以使用所有五个字符.对于这个例子,我想在左边填充0,字符为零.因此,114将成为00114,ABCD将成为0ABCD,EA222并将保持原样.

我尝试使用简单的数据语句,但当然以下方法不起作用:

data test;
    set databaseinput;
    format key $5.;
run;
Run Code Online (Sandbox Code Playgroud)

我已尝试使用用户定义的信息执行此操作,但我不认为可以根据此SAS KB答案在字符字段上正确指定范围.另外,我很确定proc格式不会让我根据传入变量动态定义结果.

我相信这里有一个明显的解决方案,但我只是错过了它.

sas

7
推荐指数
2
解决办法
2万
查看次数

"适用于SAS 9.3中的等效循环"

我正在搜索SAS 9.3宏语言中的for循环(如Python或R中)的等效内容.该DO循环似乎的是解决办法,但正是我以前不工作,因为我想要的.我在一个带有DO循环的数据步骤中创建了一种方法,但它不适用于宏语言.例如,在数据步骤中,此代码正在运行:

DATA _NULL_;
  DO i = 1,3,5,9;
    PUT i;
  END;
RUN;
Run Code Online (Sandbox Code Playgroud)

然后按预期的日志提示:

1
3
5
9
Run Code Online (Sandbox Code Playgroud)

当我尝试在宏中使用%DO循环时,我有一个错误.

%MACRO test();
  %DO i = 1,2,4,9 ;
    %PUT i = &i;
  %END;
%MEND;

%test();
Run Code Online (Sandbox Code Playgroud)

日志提示这些消息:

ERROR: Expected %TO not found in %DO statement.
ERROR: A dummy macro will be compiled
Run Code Online (Sandbox Code Playgroud)

我是SAS和stackoverflow的新手,所以我希望我的问题不是太愚蠢.在Python和R中执行此操作非常简单,因此必须有一种简单的方法在SAS中执行此操作.

谢谢你的帮助 - J.穆勒

sas sas-macro

7
推荐指数
1
解决办法
3358
查看次数

read.sas7bdat无法读取压缩文件

我正在尝试读取R中的.sas7bdat文件.当我使用该命令时

library(sas7bdat)
read.sas7bdat("filename")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in read.sas7bdat("county2.sas7bdat") : file contains compressed data
Run Code Online (Sandbox Code Playgroud)

我没有SAS经验,所以任何帮助都将受到高度赞赏.

谢谢!

r sas

7
推荐指数
3
解决办法
1万
查看次数

SAS:将字符转换为数字而不创建另一个变量

我想转换x为数字.

DATA test;
  input x $1.;
  cards;
  1
  2
  0
  ;
run;
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法:

日志打印以下注释:

NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
      2470:3
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
      2470:4
Run Code Online (Sandbox Code Playgroud)

格式不会改变.

日志打印以下注释:

NOTE: Numeric …
Run Code Online (Sandbox Code Playgroud)

sas type-conversion

7
推荐指数
1
解决办法
3万
查看次数

如何在SAS Enterprise Guide中调用另一个宏程序?

是否有任何宏命令允许从另一个程序调用一个程序(%run_program()伪代码)?

程序"设置":

%let myvar="HELLO WORLD!";
Run Code Online (Sandbox Code Playgroud)

计划"计划":

%run_program(Settings); *Pseudo-code;
%put &myvar; *Should print *Should print "HELLO WORLD!";
Run Code Online (Sandbox Code Playgroud)

概观

sas enterprise-guide

7
推荐指数
1
解决办法
2801
查看次数