Подмножество фреймов данных с использованием списка в Julia - PullRequest
0 голосов
/ 14 декабря 2018

Мне было интересно, если бы вы могли установить подкадр данных, подобный приведенному ниже, на основе значений одного из столбцов (например, идентификаторов), вы могли бы использовать оператор равенства, как в df2, однако, если вы хотите создать подмножество на основесписок, как идентификаторы. Я не могу найти оператор для подмножества кадра данных на основе списка, так как оператор .in, похоже, не работает с кадрами данных. Есть ли другой оператор, который я мог бы использовать?

  df = DataFrame(ids = [1, 1000, 10000, 100000,1,2,3,4], B = [1,2,3,4,123,6,2,7], D = ["N", "M", "I", "J","hi","CE", "M", "S"])
  df2= df[df[:pmid] .== 1000, :]
  ids = [2,3, 10000]
  df3= df[df[:pmid] .in ids,:]

На данный момент df3дает мне ошибку границы.

Также я запускаю это на Юлии 0.6.4

1 Ответ

0 голосов
/ 14 декабря 2018

Полагаю, в вашей первой строке есть опечатка * Полагаю, 1001 * должно быть pmid=, так как вы фильтруете по этому имени позже.

Что касается df3, правильный синтаксис должен быть (Iпопробовал 1.0.2):

df3= df[in.(df[:pmid], [ids]),:]

добавлена ​​заметка [] около ids, поскольку это должен быть вектор векторов.

Я бы хотел указать вам на DataFramesMeta.jlпакет, который обеспечивает намного более ясный синтаксис:

using DataFramesMeta
@where df (in.(:pmid, [ids]))

Также было довольно интересное обсуждение discourse.julialang.org относительно синтаксиса для фильтрации по списку, включая советы по производительности.

...