【问题标题】:What does this error mean in SAS: Duplicate column names have been detected这个错误在 SAS 中意味着什么:已检测到重复的列名
【发布时间】:2016-06-25 04:23:32
【问题描述】:

我是 sas 新手,正在尝试调试其他人的代码。目标是合并 3 个数据集。

这是我尝试运行的代码的最后一步:

proc sql; 
    create table foot_all as
        select*
    from foot_paper_merged          
    outer union corr
        select*,discharge_rtw_reason length=84
    from foot_dados_paper_merge         
    outer union corr
        select*
    from foot_dados_ca_dc;              
quit

但是,我收到以下错误消息:

在上述请求中检测到重复的列名 对应的列名被匹配。这种情况是模棱两可的。

首先我不太理解错误信息,因为它说有重复的列名......但当然有重复的列名!我正在尝试将 3 个可能具有或不具有相同列标题的数据集合并为一个!

我认为我不明白错误消息告诉我的内容。

有人请帮帮我!

【问题讨论】:

  • 你能用 proc append 代替追加数据吗?如果您正在处理 SAS 数据集,它通常会更有效。不过,我可能在查询中遗漏了一些东西。

标签: database sas


【解决方案1】:

触发此错误是因为 SAS 已经从 foot_dados_paper_merge 表中提取 discharge_rtw_reason(通过 select *),然后被指示再次创建变量(更新长度)。 SAS 数据集中不允许有两个同名的变量。在执行 SQL 查询之前尝试更改长度。

或者,重写如下(假设temp_var不存在):

proc sql; 
    create table foot_all as
        select*
    from foot_paper_merged          
    outer union corr
        select*,temp_var as discharge_rtw_reason length=84
    from foot_dados_paper_merge (rename=(discharge_rtw_reason=temp_var))        
    outer union corr
        select*
    from foot_dados_ca_dc;              
quit;

澄清一下 - 无论联合操作如何,这都是一个问题。尝试运行以下命令(应该提供WARNING: Variable discharge_rtw_reason already exists on WORK.test):

proc sql;
create table test as 
select*,discharge_rtw_reason length=84
    from foot_dados_paper_merge;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2018-09-04
    • 2012-12-11
    • 2021-06-10
    相关资源
    最近更新 更多