我需要创建3个SAS表的年份,季度和月份,这将包括一个指定的范围从今天的日期。我想有一种更明智的方法,但我最终得到了这样的结果(比如说,如果我需要5年前的话):
%macro asd;
%let today = %sysfunc(today());
%let end_year = %sysfunc(intnx(year,&today,-5));
proc sql;
create table years
(
Years num informat = date9. format = date9.
);
insert into years
%do i = &toda
我需要重新加载URL (在本例中是刷新同一页),直到我没有以大写的A、B或C开头的单词。
如何在EVAL中进行循环?有人能给我提供一些代码示例吗?
VERSION BUILD=7401110 RECORDER=FX
TAB T=1
URL GOTO=http://watchout4snakes.com/CreativityTools/RandomWord/RandomWord.aspx
SET !EXTRACT_TEST_POPUP NO
TAG POS=1 TYPE=SPAN ATTR=ID:tmpl_main_lblWord EXTRACT=TXT
SET !VAR1 EVAL("
给定数据库表,如何使用宏更改select查询的"where“值,以便使用rapidminer将表中列中的不同值合并起来?
例如,如果列是"city“,并且不同的值是{London、NewYork、Paris},那么如何使用宏和循环,以便子进程运行以下语句?
Select * from Table where city = SuppliedValue
我的问题实际上在于将不同的值读入变量中,并对所找到的每个值进行循环,但如果使用优化参数网格、循环运算符(和哪一个1)或宏运算符,我将无法理解。
我需要我的数据临时数据集来生成2列。word1和word2。两者都将具有空值。do循环中的值将发生更改。2只是一个虚数。
有人能告诉我如何解释这个错误吗?
data temp(drop=k);
do k=1 to 2;
word&k=.;
output;
end;
run;
日志-
180
警告:未解析外观符号引用K。错误180-322:语句无效或使用顺序不正确。
我已经编写了几个几乎相同的函数,除了它们的名称。例如:
; x is name, such as function/paragraph/line/etc.
(defun my-x-function
(interactive)
(mark-x) (do-more-stuff) (modify-x))
有没有办法自动生成这样的函数?我感觉这就是宏的作用,但我不确定如何使用它们。任何帮助,也许包括一个小的例子将是伟大的。
谢谢!
我有一个大的数据集,我在这里存储宏参数。宏本身用于调用许多其他宏,每个宏运行许多操作。
理想情况下,我希望使用另一个宏对数据集的每一行进行循环,构造(使用PROC SQL)一个宏调用,将其存储在宏变量:CALL中,并在循环的每一次迭代中调用该变量(使用PUT &CALL.;),即:
%macro OUTER_LOOP(DS);
%let K = ;
%COUNT_ROWS(DS, K); /* This stores the number of rows in DS in K. */
%do i = 1 %to &K.;
proc sq
我有一个forvalues循环:
forvalues x = 1(1)50 {
/* Code goes here */
}
理想情况下,我希望该值如下所示,而不是50。我有一个变量name。让length = length(name)来吧。无论length的最大值是多少,我都希望它能取代50。我不知道如何编写一个forvalues循环,其中的终点不是直接用数字表示的。
我想我可以推导出变量的最大长度如下:
gen id = 1
gen length = length(name)
by id, sort: egen maxlength = max(length)
但是,我不知道如何将这个
我试着在一个宏中比较两个数字值。但我一直收到以下信息:
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: 0.2
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: A character operand was found in the %EVAL function or %IF condition where a n
我有一个这样的宏:
%macro loop(report_date);
/* some sql-code with where-statement on report_date:
create table with name small_table */
%mend;
然后我想写一段代码来创建表:这个表是表的联合,其中变量report_day上的条件为真。但是我的代码不能工作:
%let days_number = 31;
%let Min_Date = '01Jan2018:00:00:00'dt;
/* create table with name
在完全执行一个函数之后,如何才能回到main的顶部呢?
示例代码:
#include <stdio.h>
void function();
int main(int argc, char const *argv[]) {
// GET BACK TO HERE AFTER EXECUTING "FUNCTION();"
printf("Something here\n");
printf("Something here\n");
printf("Something here\n");
print
我准备了一些培训和验证程序,比如:
data train;
retain Make Model DriveTrain EngineSize Horsepower MSRP;
set sashelp.cars(where=(Origin <> 'Asia'));
keep Make Model DriveTrain EngineSize Horsepower MSRP;
run;
data validation;
retain Make Model DriveTrain EngineSize Horsepower MSRP;
我对iMacro脚本的世界非常陌生,因此我很难获得(我认为是)一个非常简单的数据抓取工作。
我希望抓取的站点包括一个索引页(一个表,每个新行都是到产品页的超链接),然后是产品页(每次都是相同的格式)。我想让宏做以下操作..。
单击第一个超链接(表行ie )。POS1)
一旦加载了页面,就会刮掉10个字段(总是在每个页面上相同的位置)。
Go BACK (到索引页)
增加到下一个超链接(下一个表行,即。POS2)
提取数据并重复
将数据导出为单个文件/csv,每一组刮取的数据都是新的行/行
这就是我目前所拥有的..。(链接被删除,因为它需要登录)
VERSION
我试图为1996年至2012年(包括在内)每年生成一个虚拟变量,这样,如果是1996年,则1996年的虚拟变量应该等于1,如果其他情况下使用Stata中的foreach命令来减少时间(至少对于未来的项目),则等于0。目前正在发生的情况是,正在制作1996年的假人,但没有产生其他的假人。我认为这与我如何定义j有关,但我无法完全确定格式以实现我想要的结果。我已经在网上和在Stata帮助文件中查找过任何关于这个特定主题的内容。
以下是我到目前为止所拥有的:
local var year
local j = 1996
foreach j of var year {
gen d`j' =
我在Stata中创建一个循环有问题。
我在Stata中有一个数据集,其中我通过变量k10将我的观察分为6个类别。所以k10取值1,2,3,4,5,6。现在我想根据它的类给每个观察值分配一个值:
value 15 for k10=1
value 10 for k10=2
value 8 for k10=3
value 5 for k10=4
value 4 for k10=5
value 2 for k10=6
如果我创建一个新变量w10并按照以下方式执行它,这是很容易的:
gen w10 =.
replace w10 = 15 if k10==1
replace w10 = 10 i
我一直在尝试制作一个像这样工作的脚本
使用滚动锁定启用
保持空格=每20毫秒按一次空格键
我使用空格键作为空格的占位符,因为我不知道如何处理if PressKey(“G3”)类型的事情
这是我到目前为止所拥有的
function OnEvent(event, arg)
if (event == "G_PRESSED" and arg == 3) and IsKeyLockOn("scrolllock") then
PressKey("spacebar")
sleep(20)
ReleaseKey("spacebar")
repea
我希望有一个程序,清理一些混乱的数据,我希望做到这两个方面的资产和负债方面的项目,我正在工作。
我的问题是,有一种方法可以使用do循环来使用清理数据,首先清理资产,然后清理负债。就像这样:
%do %I = Asset %to Liability;
%assetorliability= I ;
proc sort data = &assetorliability;
by price;
run;
data want&assetorliability;
set &assetorliability;
if _N_ < 50000;
run;
实际的脚本很长,所以奇