请选择 进入手机版 | 继续访问电脑版
楼主: 123369987
8884 4

[问答] sas数据集中的日期计算(相减) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

19%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
109 点
帖子
5
精华
0
在线时间
17 小时
注册时间
2018-8-25
最后登录
2018-11-7

123369987 发表于 2018-9-12 17:10:40 |显示全部楼层 |坛友微信交流群
1论坛币

ARRIVE

LEFT

2017-01-01 14:10:07

2017-01-01 14:43:13

2017-01-01 14:12:39

2017-01-01 14:51:50

2017-01-01 14:44:21

2017-01-01 15:19:41

data a;

set p1;

A=left -arrive;

run;



15   data a;
16
17   set p1;
18
19   A=left -arrive;
20
21   run;

NOTE: 字符值已转换为数值,位置:(行:列)。
      19:3   19:9
NOTE: 无效的数值数据 LEFT='2017-01-01 14:43:13' 出现在行 19 列 3。
NOTE: 无效的数值数据 ARRIVE='2017-01-01 14:10:07' 出现在行 19 列 9。
ARRIVE=2017-01-01 14:10:07 LEFT=2017-01-01 14:43:13 A=. _ERROR_=1 _N_=1
NOTE: 无效的数值数据 LEFT='2017-01-01 14:51:50' 出现在行 19 列 3。
NOTE: 无效的数值数据 ARRIVE='2017-01-01 14:12:39' 出现在行 19 列 9。
ARRIVE=2017-01-01 14:12:39 LEFT=2017-01-01 14:51:50 A=. _ERROR_=1 _N_=2
NOTE: 无效的数值数据 LEFT='2017-01-01 15:19:41' 出现在行 19 列 3。
NOTE: 无效的数值数据 ARRIVE='2017-01-01 14:44:21' 出现在行 19 列 9。
ARRIVE=2017-01-01 14:44:21 LEFT=2017-01-01 15:19:41 A=. _ERROR_=1 _N_=3
NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      3 19:8
NOTE: 有 3 个从数据集 WORK.P1 读取的观测。
NOTE: 数据集 WORK.A 有 3 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.02 秒
      CPU 时间          0.03 秒

ARRIVE

LEFT

A

2017-01-01 14:10:07

2017-01-01 14:43:13

2017-01-01 14:12:39

2017-01-01 14:51:50

2017-01-01 14:44:21

2017-01-01 15:19:41



文本是字符型,想要求两个时间的差值,结果最好是分钟,求大神指点。

最佳答案

wang_sheng 查看完整内容

data result; set p1; new_arrive = input(arrive,ymddttm18.); new_left = input(left,ymddttm18.); time_len = intck('MINUTE', new_arrive, new_left); run;
关键词:sas数据集 数据集 Error note left

回帖推荐

whymath 发表于2楼  查看完整内容

你分明用到了减法。 数值型变量才能做运算,试试把字符型变量转先换成数值吧
wang_sheng 发表于 2018-9-12 17:10:41 |显示全部楼层 |坛友微信交流群
data result;
    set p1;
    new_arrive = input(arrive,ymddttm18.);
    new_left = input(left,ymddttm18.);
    time_len = intck('MINUTE', new_arrive, new_left);
run;

使用道具

whymath 发表于 2018-9-13 22:18:52 |显示全部楼层 |坛友微信交流群
你分明用到了减法。

数值型变量才能做运算,试试把字符型变量转先换成数值吧

使用道具

123369987 发表于 2018-9-14 11:02:57 |显示全部楼层 |坛友微信交流群
whymath 发表于 2018-9-13 22:18
你分明用到了减法。

数值型变量才能做运算,试试把字符型变量转先换成数值吧
data q1;
set a.p1;
DATE_New=input(arrive yymmddhhmmss20);
format DATE_New yymmddhhmmss20;
run;


347
348  data q1;
349  set a.p1;
350  DATE_New=input(arrive yymmddhhmmss20);
                           --------------
                           388
                           76
ERROR 388-185: 期望算术运算符。

ERROR 76-322: 语法错误,语句将被忽略。

351  format DATE_New yymmddhhmmss20;
352  run;

NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.Q1 可能不完整。该步停止时,共有 0 个观测和 4 个变量。
WARNING: 数据集 WORK.Q1 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒

刚接触,看不懂,不知道怎么改,求大神指点。

使用道具

小SAS 发表于 2019-4-18 16:44:15 |显示全部楼层 |坛友微信交流群
很好 有帮助

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 09:45