Dataframe 使用Julia中的列表对数据帧进行子集设置

Dataframe 使用Julia中的列表对数据帧进行子集设置,dataframe,julia,subset,Dataframe,Julia,Subset,我想知道是否可以根据其中一列(如ID)的值对下面这样的数据帧进行子集,但是可以使用df2中的equals运算符,如果您想基于列表(如ID)进行子集,我找不到一个操作符来根据列表对数据帧进行子集,因为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

我想知道是否可以根据其中一列(如ID)的值对下面这样的数据帧进行子集,但是可以使用df2中的equals运算符,如果您想基于列表(如ID)进行子集,我找不到一个操作符来根据列表对数据帧进行子集,因为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给了我一个边界错误


我还在Julia 0.6.4上运行这个程序,我想你的第一行
ids=
应该是
pmid=
,因为你以后会使用这个名字进行过滤

对于df3,正确的语法应该是(我在1.0.2上试过):

注:在
ids
周围添加了
[]
,因为这应该是向量的向量

我想向您介绍DataFramesMeta.jl包,它提供了更清晰的语法:

using DataFramesMeta
@where df (in.(:pmid, [ids]))
关于这个问题也进行了相当有趣的讨论 关于按列表筛选的语法,包括性能提示

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