Exemplo n.º 1
0
def FILTER(index, x, *conds: int):
    for cond in conds:
        if is_missing(cond, True):
            return -2147483648
        if not cond:
            return -2147483648
    return x
Exemplo n.º 2
0
def MATCH(index, needle, *haystack):
    if is_missing(needle):
        -2147483648
    for index, value in enumerate(haystack):
        if is_equal(needle, value):
            return index + 1
    else:
        return -2147483648
Exemplo n.º 3
0
def RECODE(index, x, *args):
    for i in range(0, len(args) - 1, 2):
        cond = args[i]
        if not is_missing(cond) and cond:
            return args[i + 1]
    if len(args) % 2 == 1:
        return args[-1]
    else:
        return x
Exemplo n.º 4
0
def SUM(index,
        arg0: float,
        *args: float,
        ignore_missing: int = 0,
        min_valid: int = 0):
    values = [arg0]
    values.extend(args)
    if min_valid > 0 or ignore_missing != 0:
        values = list(filter(lambda x: not is_missing(x), values))
    if len(values) < min_valid:
        return NaN
    return math.fsum(values)
Exemplo n.º 5
0
def MEAN(index,
         arg0: float,
         *args: float,
         ignore_missing: int = 0,
         min_valid: int = 0):
    values = [arg0]
    values.extend(args)
    if min_valid > 0 or ignore_missing != 0:
        values = list(filter(lambda x: not is_missing(x), values))
    if len(values) < min_valid:
        return NaN
    else:
        return stats.mean(values)
Exemplo n.º 6
0
def ABS(index, value: num):
    if is_missing(value):
        return value
    return abs(value)
Exemplo n.º 7
0
def SUM(index, arg0: float, *args: float, ignore_missing: int = 0):
    values = [ arg0 ]
    values.extend(args)
    if ignore_missing != 0:
        values = list(filter(lambda x: not is_missing(x), values))
    return math.fsum(values)
Exemplo n.º 8
0
def STDEV(index, arg0: float, *args: float, ignore_missing: int = 0):
    values = [ arg0 ]
    values.extend(args)
    if ignore_missing != 0:
        values = list(filter(lambda x: not is_missing(x), values))
    return stats.stdev(values)
Exemplo n.º 9
0
def MIN(index, arg0: float, *args: float):
    values = [ arg0 ]
    values.extend(args)
    values = list(filter(lambda x: not is_missing(x), values))
    return min(values)
Exemplo n.º 10
0
def NOT(index, x):
    if is_missing(x):
        return x
    return 1 if not x else 0
Exemplo n.º 11
0
def IFMISS(index, cond, x=1, y=-2147483648):
    return x if is_missing(cond, empty_str_is_missing=True) else y
Exemplo n.º 12
0
def IF(index, cond: int, x=1, y=-2147483648):
    if is_missing(cond, True):
        return -2147483648
    return x if cond else y
Exemplo n.º 13
0
def VN(values):
    values = filter(lambda v: not is_missing(v), values)
    return sum(1 for _ in values)