2017-02-14 5 views
3

Предположим, у меня есть блок данных с несколькими категориальными размерами и размером «значение», и я хочу, чтобы некоторые из них заполнили их, игнорируя остальные.Как включить функцию "игнорировать" столбцы?

В Джулии DataFrames есть функция агрегат, но если я позволяю некоторые categarical значения я получаю сообщение об ошибке, как он пытается применить функцию (здесь, сумма), также им вместо того, чтобы просто игнорировать их:

В:

using DataArrays, DataFrames 
df = DataFrame(
    colour = ["green","blue","white","green","green"], 
    shape = ["circle", "triangle", "square","square","circle"], 
    border = ["dotted", "line", "line", "line", "dotted"], 
    area = [1.1, 2.3, 3.1, 4.2, 5.2]) 

Out:

colour shape  border area 
1 green circle  dotted 1.1 
2 blue triangle line 2.3 
3 white square  line 3.1 
4 green square  line 4.2 
5 green circle  dotted 5.2 

В:

aggregate(df,[:colour,:shape, :border],sum) # Ok 
aggregate(df,[:colour,:shape],sum) # what I would like, ignoring border column 

Out:

LoadError: MethodError: no method matching +(::String, ::String) 

Очевидно, я могу просто удалить лишние столбцы до объединения, но, может быть, есть способ сделать это в один проход?

ответ