假设我有一个带有两列的管道分隔的文本文件:
LIBRARY_NAME|TABLE_NAME
A.|ZZZ
A.|XXX
B.|QQQ
B.|AAA
B.|MNO
B.|OPQ
我使用INFILE语句导入文件,并将两列的所有值分别分配给宏变量&LIB和&TAB。
/* COUNT THE TABLES IN ORDER TO BE ABLE TO LOOP THROUGH THEM LATER: */
PROC SQL;
SELECT COUNT(*) INTO :TABLE_C FROM TABLE_NAMES;
/* DELETE LEADING BLAN
我有包含id列的sas表,并且我正在查询teradata sql,条件是sql表与sas表具有相同的id。我使用下面的代码: libname ss"dir";
proc sql;
connect to teradata(server);
crreate table ss.new as select * from connection to teradata(
select some from new_db where id in (select id from ss.table)); 代码无法识别ss库。如何将列作为sql参数传递?
我在中工作,并有一个包含唯一标识符(id_list)的列SAS表。
我想过滤另一个SAS表,以只包含可以在id_list中找到的观察。
到目前为止我的代码是:
proc sql noprint;
CREATE TABLE test AS
SELECT *
FROM data_sample
WHERE id IN id_list
quit;
这段代码给出了以下错误:
Error 22-322: Syntax error, expecting on of the following: (, SELECT.
我做错了什么?
谢谢你的帮忙。
我的公司刚刚从R转到SAS,我正在将我的大量R代码转换为SAS。在SAS中动态声明变量(宏变量)是一个很大的问题。
例如,我的一个流程需要取一个列的平均值,然后在代码的各个步骤中应用它。
%let numm =0;
我用我的numm变量尝试了下面的方法,但是这两种方法都不起作用,而且我似乎无法在网上找到任何东西。
PROC MEANS DATA = ASSGN3.COMPLETE mean;
#does not work
&numm = VAR MNGPAY;
run;
Proc SQL;
#does not work
&numm =(Select avg(Payment)
在SAS中的dataset中,我多次进行观察。我要做的是:我试图添加一个列,其中包含每个观察的频率,并确保我只在我的数据集中保存了一次。我必须对有许多行和大约8个变量的数据集这样做。
name id address age
jack 2 chicago 50
peter 4 new york 45
jack 2 chicago 50
这将成为:
name id address age frequency
jack 2 chicago 50
我正在寻找一些关于我遇到的SAS/SQL性能问题的指导。在SAS企业指南中,我创建了一个创建表的程序。该表大约有90k行:
CREATE TABLE test AS (
SELECT id, SUM(myField)
FROM table1
GROUP BY id
)
我有一个有数百万行的大得多的表。每一行都有一个id。我想对这个表上的值求和,只使用'test‘表中的id。我试过这个:
CREATE TABLE test2 AS(
SELECT big.id, SUM(big.myOtherField)
FROM big
INNER JOIN test
"select from dual“的SAS版本是什么?我想使用Proc SQL创建一个表,而不是从激活表中进行选择。例如。基本上,我想要这样的东西: PROC SQL;
CREATE TABLE tmptable AS
SELECT 1 AS myvar FROM dual;
QUIT; 这不起作用。我有什么选择?
需要你的帮助和指导。请见下文
*rsubmit;proc sql;
connect to teradata(user=&user_id. password=&user_pwd.);
create table mylib.DWH_table as select * from connection to teradata(
select distinct nm from DWH_table
);
quit;*endrsubmit;
*rsubmit;
DATA mylib.out_sas1;
set mylib.DWH_table;
if prxmatch (
我有一个包含许多字段的数据集。我试图总结按年平均值计算的“价格”数据。例如:
1900年至1925年:“平均价格”
1925年至1950年:“平均价格”
1950至1975年:“平均价格”
1975至2000年:“平均价格”
2000年至2017年:“平均价格”
试过:
proc sql;
select avg(price) as avg_price
FROM summary
WHEN year between 1995 and 2000;
quit;
以上代码不起作用。你能帮我处理代码吗(请添加到proc并退出或者其他我需要的东西,我是SAS/SQL新手)
我正在寻找SAS数据集中的特定雇主。数据集还没有检查拼写,所以如果我要查找Univ,它可以输入为University,University,University……
我试着扫描,计算匹配的字母,‘包含’。这些都是工作,但我仍然错过了一些。
proc sql;create table SpecificEmployers as select *,case when Emp when 'Univ‘then 'Y’else 'N‘end as Emp from AllEmployers ;quit;
我已经创建了一个SAS表,如
Create table DX.SAS_Table as
select * from connection to oracle
(
select * from my table
)
现在我想将SAS_Table的计数插入到另一个Oracle表中,所以我执行了以下操作
Proc sql;
connect to oracle (connection..!)
execute(
INSERT INTO TEST_SAS_INSERT
select count(*) from SAS_Table
) by oracle;
退出;它向我抛出错误错误: O
我是SAS的新手,在使用MODIFY语句(不使用proc sql)向SAS中的现有数据集添加列时遇到一些问题。
假设我有这样的数据
id name salary perks
1 John 2000 50
2 Mary 3000 120
我需要的是一个新的列,其中包含工资和津贴的总和。我试着这样做
data data1;
modify data1;
money=salary+perks;
run;
但显然它不起作用。如果有任何帮助,我将不胜感激!
我正在使用proc import导入文件
proc import datafile="/opt/Export_d.csv" replace
out=work.export_data; run;
然后,我从导出表中选择了2个变量,其中包含一些条件proc SQL;
create table work.login2
as select ' SURVEY_ID'n, TIME format=datetime20.,' USERNAME'n
from work.export_data
having TIME=max(TIME) and ' USE