2017-10-19 103 views
0

我是SAS新手,嘗試做下一個: 我有兩個表(用戶&評論)通過user_id連接。SAS檢查是否爲IN字符

我已經通過user_id合併了兩者。 有兩個變量,我想用:

  1. 「日期」(審查的另存爲格式MMDDYY10。)
  2. 「精英」(一年一用戶是精英,保存爲字符

精英具有不同的形式(示例):

  • 空單元
  • 2012,2015,2017
  • 2012:2017年

如何檢查,如果用戶是精英,當他寫的評論?

由於提前, 貝約

+0

是否'2012:2017'意味着用戶是精英從2012年的所有年份2017包含? – user667489

回答

0

這個佔地的情況下在一年中不存在的elite的文本,但包含在範圍:

data test_cases; 
input date yymmdd10. + 1 elite $32.; 
format date yymmdd10.; 
infile cards missover; 
cards; 
2012-01-01 2012,2015,2017 
2012-01-01 2012:2017 
2013-01-01 2012:2017 
2012-01-01 
2011-01-01 2012,2015,2017 
2011-01-01 2012:2017 
; 
run; 

data example; 
    set test_cases; 
    article_year = put(year(date),4.); 
    if index(elite,':') = 0 then elite_flag = index(elite,article_year); 
    else elite_flag = substr(elite,1,4) <= article_year <= substr(elite,6,9); 
run; 
+0

謝謝!現在我懂了! – Pello

0

可以使用YEAR函數從date提取年份,然後用PUT函數將其轉換爲字符,最後INDEX功能來搜索elite列表:

if index(elite,put(year(date),4.)) then ... 

當索引函數在elite變量中找到date的年份時,條件將成立。