Пример #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
Пример #2
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
Пример #3
0
def ABS(index, value: num):
    if is_missing(value):
        return value
    return abs(value)
Пример #4
0
def NOT(index, x):
    if is_missing(x):
        return x
    return 1 if not x else 0
Пример #5
0
def IFMISS(index, cond, x=1, y=-2147483648):
    return x if is_missing(cond, empty_str_is_missing=True) else y
Пример #6
0
def IFELSE(index, cond: int, x=1, y=0):
    if is_missing(cond, True):
        return -2147483648
    return x if cond else y
Пример #7
0
def IF(index, cond: int, x=1):
    if is_missing(cond, True):
        return -2147483648
    return x if cond else -2147483648
Пример #8
0
def VN(values):
    values = filter(lambda v: not is_missing(v), values)
    return sum(1 for _ in values)
Пример #9
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)
Пример #10
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)
Пример #11
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)