2015-12-14 2 views
3
using DataFrames 

df = DataFrame(A = 1:10, B = 2:2:20) 

10x2 DataFrame 
| Row | A | B | 
|-----|----|----| 
| 1 | 1 | 2 | 
| 2 | 2 | 4 | 
| 3 | 3 | 6 | 
| 4 | 4 | 8 | 
| 5 | 5 | 10 | 
... 
... 

est-il possible de sous-ensemble dataframe en utilisant une liste de valeurs, quelque chose commejulia dataframe - colonne de sous-ensembles par liste de valeurs

df[df[:A] .in [3,4], :] 

si la liste est faible, cela peut par fait par

df[(df[:A] .== 3) | (df[:A] .== 4), :] 

mais je me demande s'il y a moyen de le faire pour une grande liste de valeurs

+1

Copie possible de [Fonction "in" vectorisée en julia?] (Http://stackoverflow.com/questions/29661315/vectorized-in-function-in-julia) –

+2

'df [[x dans [3,4] pour x en df [: A]],:] 'est un équivalent. Facile à adapter à d'autres ensembles et conditions. –

+0

La fonction vector de Matt B est incroyablement utile et la compréhension à double tableau n'est pas très intuitive pour les nouveaux utilisateurs de julia. Je pense qu'il devrait être ajouté à la base. – ARM

Répondre

4
julia> df = DataFrame(x = 1:3:30, y = [2, 1, 2,1,3,4,5,3,3,3]) 
10x2 DataFrames.DataFrame 
| Row | x | y | 
|-----|----|---| 
| 1 | 1 | 2 | 
| 2 | 4 | 1 | 
| 3 | 7 | 2 | 
| 4 | 10 | 1 | 
| 5 | 13 | 3 | 
| 6 | 16 | 4 | 
| 7 | 19 | 5 | 
| 8 | 22 | 3 | 
| 9 | 25 | 3 | 
| 10 | 28 | 3 | 

julia> df[findin(df[:y],[1,3]),:] 
6x2 DataFrames.DataFrame 
| Row | x | y | 
|-----|----|---| 
| 1 | 4 | 1 | 
| 2 | 10 | 1 | 
| 3 | 13 | 3 | 
| 4 | 22 | 3 | 
| 5 | 25 | 3 | 
| 6 | 28 | 3 |