Estoy intentando desarrollar una función de columna que cuente cada fila de mi tabla de datos donde
1) Las coordenadas X e Y están a menos de 2 distancias euclidianas.
y
2) El valor es = 5
En esta cuadrícula de 5 por 5, cada :Value está establecido en 1, excepto el punto de datos central (3,3) que tiene :Value = 5.
Los puntos de datos en azul están a <= 2 unidades del punto de datos central y, por lo tanto, cuentan correctamente 1 punto de datos en su rango.
Los puntos de datos en rojo no tienen ninguna fila con :Value = 5 en el rango y, por lo tanto, cuentan un valor de cero.

He estado experimentando con diferentes métodos para lograr esto. Principalmente he probado el comando `For Each Row()`, pero no parece funcionar bien en una función de columna. Probablemente lo estoy haciendo mal. ¿Alguna idea?
Si necesitas una fórmula, el proceso puede ser algo lento, pero usar `As Constant` puede ser útil. Podrías consultar las funciones `Distance()`, `KDTable()` y quizás `VPTree()`.
Estos ejemplos no están optimizados, pero son solo algunos ejemplos sencillos de cómo usar `As Constant()` y `KDTable/Distance`.
Current Data Table() << New Column("R", Numeric, Ordinal, Formula(
As Constant(
tree = KDTable(Current Data Table()[0, {"X", "Y"}]);
{rows, dist} = tree << K nearest rows(25, 13);
v = rows[Loc(dist <= 2)];
);
If(Contains(v, Row()),
1,
0
);
));
Un ejemplo usando Distancia
Current Data Table() << New Column("R", Numeric, Ordinal, Formula(
As Constant(
five_idx = Where(:Value == 5);
m = :X[five_idx] || :Y[five_idx];
);
Sqrt(Distance(Matrix({:X, :Y})`, m)) <= 2;
));
Si no necesitas la fórmula, se pueden hacer más eficientes.