Как удалить строку с повторяющимся значением? - PullRequest
1 голос
/ 07 ноября 2019

У меня есть таблица данных в kdb, и я хотел бы использовать q для удаления строк, которые содержат повторяющиеся значения в одном столбце.

Например, если у меня есть следующая таблица, где в столбце «Возраст» есть повторяющееся значение:

    Name    Age    Degree
    ---------------------
    Alice   26     Science
    Bob     34     Arts
    Carrie  26     Engineering

Как мне удалить третью строку, чтобы я получилследующее:

    Name    Age    Degree
    ---------------------
    Alice   26     Science
    Bob     34     Arts

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 ноября 2019

Вы могли бы сделать

select from t where i=(first;i)fby Age
3 голосов
/ 07 ноября 2019

Вы можете удалить любые дубликаты в любых столбцах, используя это:

q)delete from t where ({not x in 1#x};i) fby Age
Name  Age Degree
-----------------
Alice 26  Science
Bob   34  Arts

Может также быть решено с помощью предложения by вместо fby, но в этом случае для получения первого вхождения каждого возраста выприходится использовать реверс

q)0!select by Age from reverse t
Age Name  Degree
-----------------
26  Alice Science
34  Bob   Arts
...