SAS检查年份是否为IN字符

时间:2017-10-19 12:23:24

标签: date sas character

我是SAS的新手,并尝试着做下一步: 我有两个表(用户和评论)通过user_id连接。

我通过user_id合并了两者。 我想要使​​用两个变量:

  1. “date”(评论。保存为格式 MMDDYY10。
  2. “精英”(用户为精英年,保存为角色
  3. Elite有不同的形式(例子):

    • 空单元格
    • 2012,2015,2017
    • 2012:2017

    如何在撰写评论时检查用户是否是精英?

    提前致谢, 贝约

2 个答案:

答案 0 :(得分:0)

您可以使用YEAR函数从date中提取年份,然后使用PUT函数将其转换为字符,最后使用INDEX函数搜索elite列表:

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

当索引函数在date变量中找到elite年份时,条件为真。

答案 1 :(得分: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;