在过去的几天里,我几乎首先使用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) 我希望能够使用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作为可用的语法.
我确定我需要再做一两步但我不知道是什么.
我知道Sas在处理时从数据集顶部的观察开始,然后进入下一个直到它到达底部观察,但是有一种简单的方法可以使sas处理首先进行底部观察然后再进入顶部?
任何人都可以建议相应的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) 我有一个sql server 2005数据库,其中包含一个数据类型为bit的列.当我查看sql server management studio中的数据时,我看到列值为0或1,当我用SAS拉动时我看到0或-1,就像SAS正在否定1值.有人对此有解释吗?谢谢.
我正在从包含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 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.穆勒
我正在尝试读取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经验,所以任何帮助都将受到高度赞赏.
谢谢!
我想转换x为数字.
DATA test;
input x $1.;
cards;
1
2
0
;
run;
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的方法:
用*1:
/* trial1 */
DATA test1;
SET test;
x = x*1;
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)
格式不会改变.
用input():
/* trial2 */
DATA test2;
SET test;
x = input(x,BEST1.);
run;`
Run Code Online (Sandbox Code Playgroud)日志打印以下注释:
NOTE: Numeric …Run Code Online (Sandbox Code Playgroud) 是否有任何宏命令允许从另一个程序调用一个程序(%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)
