楼主: zwj1012
16334 15

[有偿编程] 用R创建一个新的变量:计算相邻时间间隔差 [推广有奖]

11
yywan0913 在职认证  发表于 2014-7-29 08:52:33
zwj1012 发表于 2014-7-28 15:51
老师,我想计算#OC列:每段(之前以1800秒分割)首尾OC数值之差,怎么写呢?
我试着写了,总是错误,运行 ...
这个应该就是diff之后的和值了,也就是你说的每段首尾只差
  1. doc=diff(t[,1])
  2. dioc=c();for(i in 1:(length(p)-1)) dioc=c(dioc,sum(doc[(p[i]+1):(p[i+1]-1)]))
复制代码
运行完都检查一下吧,我都快混了。

12
jacky陈2183 在职认证  学生认证  发表于 2014-7-29 08:57:37
学习了,多谢。

13
zwj1012 发表于 2014-7-29 09:11:12
yywan0913 发表于 2014-7-29 08:52
这个应该就是diff之后的和值了,也就是你说的每段首尾只差运行完都检查一下吧,我都快混了。
学习了,感谢感谢

14
zwj1012 发表于 2015-3-10 16:17:12
yywan0913 发表于 2014-7-22 09:15
老师您好,之前您写的这段代码,将所有数据以间隔大于1800秒为依据,分成了若干组,给出了这些分组数据的所在位置:
as.vector(diff(time))    #之前最后一句错误,已改

  [1]   3 305   4   5   2   4   4   3   4   4   4 979   4   4   4   4   4   4

[19]   4   4   4   4   4   4   4   4   4   3   4   4   4   4   4   4   4   4

[37]   4   4   4   4   4   4   4   4   3   4   4   4   4   4   4   4   4   4

[55]   4   4   4   4   4   4   4   4   4   4   4   3   4   4   4   4   4   4

[73]   4   4   4   4   4   4   4   4   4   4   4   4   3   5   3   4   4   4

[91]   4   4   4   5   4  28   4  25   4   4   4   4   4   4   4   4   4   3

[109]   4   4   4   4   4   4   4   4   4    ...

uu=as.vector(diff(time))    #取了一部分结果

p=which(uu>20);p      #以20为例    可改1800    p为大于20所在位置

[1]  2 12 96 98

p=c(0,which(uu>20),length(uu)+1)      #扩展p的边界位置


我现在想请教的问题是:如何将这些分组后,每组的起始时间与结束时间,以及这些时间所对应的OC数据筛选出来,也就是只看每组的起始时间与结束时间的数据。

谢谢老师
盼回复!!!!

15
yuwenhuajiayou 学生认证  发表于 2015-4-4 19:05:09
非常感谢啦!!学习了@yywan0913  

16
xttOY 发表于 2015-10-22 22:24:10
从diff(time)就开始错,错误显示是
Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] :
  non-numeric argument to binary operator

请问是怎么回事?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 00:31