2015-09-14 17 views
5

我有一個數據框的幾列說column1,column2 ... column100。如何僅選擇列的一個子集,例如(不是列1)應該返回所有列column2 ... column100。如何在julia中只選擇數據幀列的一個子集

data[[colnames(data) .!= "column1"]]) 

似乎沒有工作。

我不想改變數據幀。我只是想選擇所有沒有在我的例子具有特定列名狀

回答

6

正如@Reza Afzalan所說,你要做的是返回一個字符串數組,而DataFrame中的列名是符號。

由於朱莉婭沒有條件列表解析,你可以做我想最好的事情是

data[:, filter(x -> x != :column1, names(df))] 

這會給你的數據與第1列刪除設置(無變異的話)。你可以這樣延伸到對名字的列表檢查以及:

data[:, filter(x -> !(x in [:column1,:column2]), names(df))] 
+0

的[文檔](http://juliastats.github.io/DataFrames.jl/subsets/)提到了使用一組名稱作爲選擇,儘管不要深入探討如何定義這樣一套方法 –

2

colnames(data) .!= "column1"#列=>返回布爾數組

我認爲正確的方法是使用一個過濾功能返回所需的列名

filter(x->x != "column1", colnames(data))#=>返回字符串的數組

數據幀的列名是符號數據類型的

map(symbol ,str_array_of_filterd_column_names)#=>返回數組相同的符號