Sha256: 96c455607cc03b015fdf648900c62b953da91f67edfb2887dbd00cb73593becd
Contents?: true
Size: 1.44 KB
Versions: 40
Compression:
Stored size: 1.44 KB
Contents
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. module Arrow # Experimental # # TODO: Almost codes should be implemented in Apache Arrow C++. class RollingWindow def initialize(table, size) @table = table @size = size end def lag(key, diff: 1) column = @table[key] if @size windows = column.each_slice(@size) else windows = column end lag_values = [nil] * diff windows.each_cons(diff + 1) do |values| target = values[0] current = values[1] if target.nil? or current.nil? lag_values << nil else lag_values << current - target end end ArrayBuilder.build(lag_values) end end end
Version data entries
40 entries across 40 versions & 1 rubygems