w****b 发帖数: 777 | 1 收集到一组数据,有一组event在不同时间发生,发生的间隔不定有长有短
第一个event发生,之后的1小时内发生的event都要删除,然后再出现的event算第二个
,再他之后1小时发生的都要删除,以此类推
比如第10分钟,第50分钟,第60分钟,第71分钟,第89分钟各发生一次
那么这里面只算第10分钟,第71分钟,这两次
试了几次写出来的code都不能完全正确的保留需要保留的发生次数
非面试题,是工作中遇到的实际困难
求大牛指点,不用写code,告诉我一个思路即可,多谢多谢 |
m******u 发帖数: 277 | 2 try "retain" function in long data
or "array" in wide data |
l******t 发帖数: 96 | 3 没看懂
71 - 10 = 51 < 60
【在 w****b 的大作中提到】 : 收集到一组数据,有一组event在不同时间发生,发生的间隔不定有长有短 : 第一个event发生,之后的1小时内发生的event都要删除,然后再出现的event算第二个 : ,再他之后1小时发生的都要删除,以此类推 : 比如第10分钟,第50分钟,第60分钟,第71分钟,第89分钟各发生一次 : 那么这里面只算第10分钟,第71分钟,这两次 : 试了几次写出来的code都不能完全正确的保留需要保留的发生次数 : 非面试题,是工作中遇到的实际困难 : 求大牛指点,不用写code,告诉我一个思路即可,多谢多谢
|
w****b 发帖数: 777 | 4
71 - 10 = 61吧...
【在 l******t 的大作中提到】 : 没看懂 : 71 - 10 = 51 < 60
|
l******t 发帖数: 96 | 5 -_-居然算错了
写一个loop应该可以解决吧。储存上一个的时间,如果下一个进来的差别不到60min就
扔掉,如果超过60min就update时间
【在 w****b 的大作中提到】 : : 71 - 10 = 61吧...
|
w******4 发帖数: 488 | 6 正在学python, 写了这个code, lz可以试试, 思想是用一个新的变量s记录新的时间
序列index
lst = [10, 50, 60, 71, 89]
lst2= []
lst2.append(lst[0])
s = 0
for i in range(1,len(lst)):
if lst[i] - lst2[s] <= 60:
continue
else:
s += 1
lst2.append(lst[i])
print lst2 |
w****b 发帖数: 777 | 7
谢谢,能不能给个网上这种loop的sample看一下?我没有写过这种loop
【在 l******t 的大作中提到】 : -_-居然算错了 : 写一个loop应该可以解决吧。储存上一个的时间,如果下一个进来的差别不到60min就 : 扔掉,如果超过60min就update时间
|
l******t 发帖数: 96 | 8 楼上的似乎就可以吧
【在 w****b 的大作中提到】 : : 谢谢,能不能给个网上这种loop的sample看一下?我没有写过这种loop
|
w****b 发帖数: 777 | 9
看不懂python -_-
【在 l******t 的大作中提到】 : 楼上的似乎就可以吧
|
l****u 发帖数: 529 | 10 Suppose all your data are ascendingly sorted.
data one;
input et;
cards;
10
20
30
71
89
195
200
.
.
.
;
run;
data two;
set one;
retain x;
if _n_=1 then do;
x=et;
flg=1;
end;
if et-x>60 then do;
x=et;
flg=1;
return;
end;
if flg=1;
run;
data one;
input e1 e2 e3 e4 e5 e6 e7 e8.....;
cards;
10 20 30 71 89 195 200.....
;
run;
data two;
set one;
array old [*] e:;
x=min(of old[*]);
output;
do i=1 to dim(old);
if old[i]-x>60 then do;
x=old[i];
output;
i=1;
end;
end;
run; |