【问题标题】:PROC SQL SAS PROGRAMMINGPROC SQL SAS 编程
【发布时间】:2015-09-07 06:04:11
【问题描述】:

我有以下数据集:

Name  Address         Bank_Account  Ph_NO    IP_Address   Chargeoff
AJ    12 ABC Street     1234        369      12.12.34         0
CK    12 ABC Street     1234        450      12.12.34         1
DN    15 JMP Street     3431        569      13.8.09          1
MO    39 link street    8421        450      05.67.89         1
LN    12 ABC Street     1234        340      14.75.06         1
ST    15 JMP Street     8421        569      13.8.09          0`

使用此数据集,我想在 SAS 中创建以下视图:

 Name   CountOFAddr CountBankacct CountofPhone CountOfIP CountCharegeoff
  AJ       3             3           1            2             2
  CK       3             3           2            2             3
  DN       2             1           2            2             1
  MO       1             2           2            1             2
  LN       3             3           1            1             2
  ST       2             2           2            2             2

输出变量表示如下:

-CountOfAddr : 对于 AJ,countOFAddr 为 3,这意味着 AJ 与自己、CK 和 LN 共享其地址

-CountBankAcct : 对于 MO 的 BankAcct 计数为 2,这意味着 MO 与自己和 ST 共享其银行帐号。变量 CountofPhone 和 CountOfIP 也是如此。

-CountChargeoff:这个有点棘手,它基本上意味着AJ通过地址链接到CK和LN......并且CK和LN都已被取消,因此AJ的countChargeoff为2。

对于CKcountChargeOff3,因为它与自身相关联,MO 通过银行帐户,LN/AJ 通过街道地址...所以CK's 网络中的总chargeoff3(AJ+COCK+CO 计数MO+COLN 计数)

我目前在一家金融服务公司担任风险分析师,解决此问题的代码可以帮助我们显着减少欺诈账户的资金。

谢谢。

【问题讨论】:

  • 你知道如何在SAS中创建视图吗?或者只是需要有关 SQL 的帮助? Charge off字段不明确
  • 是的,收费没有意义。例如,其他一切都是微不足道的select count(*) from ... where bank_account=...
  • 要遵守 SO 规则,您应该发布您尝试过的内容,这不是代码编写服务。

标签: sql sas proc do-loops


【解决方案1】:

SQL Fiddle Demo

SELECT 
    Name,
    (SELECT Count(Address)
     FROM dataset d2
     WHERE d1.Address = d2.Address 
    ) CountOFAddr,

    (SELECT Count(Bank_Account)
     FROM dataset d2
     WHERE d1.Bank_Account = d2.Bank_Account
    ) CountBankacct,

    (SELECT Count(Ph_NO)
     FROM dataset d2
     WHERE d1.Ph_NO = d2.Ph_NO
    ) CountofPhone,

    (SELECT Count(IP_Address)
     FROM dataset d2
     WHERE d1.IP_Address = d2.IP_Address
    ) CountOfIP, 

    (SELECT count(d2.Chargeoff) 
     FROM dataset d2
     WHERE  d1.name <> d2.name
       and (   d1.Address = d2.Address
            or d1.Bank_Account = d2.Bank_Account
            or d1.Ph_NO = d2.Ph_NO 
            or d1.IP_Address = d2.IP_Address
           )
    ) CountCharegeoff           
FROM dataset d1

我包括冲销计算。

带上所有d2 &lt;&gt; d1.name,其中有任何共同的领域。那就数一数吧。

【讨论】:

  • 我包括冲销计算。并包括小提琴
  • 我没有投反对票,但我想这是因为没有解释,可能是因为 OP 没有发布任何尝试,所以这不是应该回答的有效 SO。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多