2017-10-19 97 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的年份时,条件将成立。