2014-09-17 1 views
0

У меня есть массив с заголовком строкой говорит:DataFrame из массива с заголовком

arr = ["age" "height" "weight"; 
     20  175  73; 
     30  160  66] 

, и я хочу, чтобы преобразовать его в DataFrame, что рекомендуемый метод? Мой текущий метод - это ответ ниже, любые рекомендации?

ответ

3

лайнеры:

# convert a Matrix{Any} with a header row of col name strings to a DataFrame 
# e.g. mat2df(["a" "b" "c"; 1 2 3; 4 5 6]) 

mat2df(mat) = 
    DataFrame([[mat[2:end,i]...] for i in 1:size(mat,2)], Symbol.(mat[1,:])) 

# convert a Matrix and a list of col name strings to a DataFrame 
# e.g. matncolnames2df([1 2 3;4 5 6], ["a","b","c"]) 

matncolnames2df(mat, colnames) = 
    DataFrame([[mat[:,i]...] for i in 1:size(mat,2)], Symbol.(colnames)) 

Re: комментарий Iain Даннинг в ниже: Был здесь макрос один раз, но DataFrame конструктор он называется получил устаревшим и выше работает хорошо, так что теперь его нет ... (Don 't беспокоиться, это было не так хорошо, я думаю, что Iain Dunning был просто хорош :)

+0

Awesome macro, very nice – IainDunning

+0

Thanks @IainDunning! :) – JobJob

+1

Внимание, что если матрица для преобразования имеет смешанные типы, преобразованный DataFrame имеет все символы Any (см. Https://stackoverflow.com/questions/46487261/how-to-convert-a-mixed-type-matrix-to- dataframe-in-julia-detectizing-the-column/46488660 # 46488660) – Antonello