【问题标题】:sas merge nomatch conditional for only one tablesas merge nomatch 条件仅适用于一张表
【发布时间】:2014-04-16 14:26:16
【问题描述】:

我有 4 张桌子:

  1. 一个包含在 3 月份做了某事(发布或回复)的用户列表(字段 email1)
  2. 一个包含 1 月用户的回复(几个字段,但我需要使用 Mailfrom_Address)
  3. 另一个是在 2 月做出的​​回复(几个字段,但我需要使用 Mailfrom_Address)
  4. 另外一个发布了 1 月、2 月和 3 月的用户(此表包含电子邮件 1)

我需要从 3 月份开始做某事的表 1 中获取用户。这意味着我需要从表 1 中排除表 2 或表 3 或表 4 中的用户(但仅适用于 1 月和 2 月……这是我的问题:表 4 上的这种情况)。

我启动了这段代码。

data lib.all_emails_march_start (keep= email1);
merge lib.all_emails_march (IN=In1) 
lib.replies_ene_2 (rename= (Mailfrom_Address=email1)) (IN=In2)
lib.replies_feb_2 (rename= (Mailfrom_Address=email1)) (IN=In3)
lib.listings_5 where anomes in ('2014-01', '2014-02') (IN=In4);
by email1;
if (In1=1 and In2=0 and In3=0 and In4=0) then output lib.all_emails_march_start;
run;

但是条件应该只适用于表 4(listings_5),并且这个变量(anomes)不在其他表(1 到 3)中,所以我不知道该怎么做。

我只想在一个 stp 中执行此操作,而不是首先为仅包含 jan 和 feb 的列表创建一个表。请给我一些想法好吗?

谢谢!!!! :D :D :D

【问题讨论】:

  • 听起来您应该在PROC SQL 中而不是在数据步骤中执行此操作,或者在数据步骤中使用不同的方法。如果不使用多个数据步骤,合并就不能使用多个连接条件。

标签: merge sas conditional no-match


【解决方案1】:

PROC SQL 可能更适合这个...

过程 sql ; 创建表 lib.all_emails_march_start 为 选择 * 来自 lib.all_emails_march 用户不在的地方(从 lib.replies_ene_2 中选择不同的用户) 并且用户不在(从 lib.replies_feb_2 中选择不同的用户) 并且用户不在(从 lib.listings_5 中选择不同的用户 其中异常在 ('2014-01', '2014-02')) ; 辞职 ;

【讨论】:

  • 谢谢!我试图使用合并...但似乎我找不到这样做的机会:(。
猜你喜欢
  • 2017-10-07
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多