2013-10-08 1 views
1

enter image description hereКак реализовать функцию чтения таблицы в F #? (например, Vlookup)

Мне нужна функция. Когда я ввожу 0 ~ 15 и защиту, он вернется на 45%. Как функция Vlookup в Excel. Есть функция, подобная этой в F #?

(На веб-сайте попробуйте F #, Learn -> Финансовое моделирование -> Использование поставщика Yahoo Finance Type Он рекомендовал нам использовать Samples.Csv.dll. Однако мне не удалось установить его и не хотите устанавливать его пакет только для функции :(..)


Я последовал за учебник (http://fsharp.github.io/FSharp.Data/library/CsvProvider.html) и попытался запустить программу на компьютере. Но я в беду,

enter image description here

Не удалось определить тип CsvProvider (поэтому я не могу использовать функцию Stocks.Load.)

В чем проблема ..?

+0

Вы запрашиваете функцию, чтобы сделать это из F # в Excel? –

+2

Каков источник данных? Если вы получаете данные из CSV, посмотрите на http://fsharp.github.io/FSharp.Data/library/CsvProvider.html и http://fsharp.github.io/FSharp.Data/library /CsvFile.html. Это в основном более продвинутые версии инструментов CSV, доступных в Try F #. –

+0

Я хочу прочитать данные из файла csv в F #. –

ответ

2

Самый простой способ сделать это с DataTable:

open System.Data 
open System.IO 
open LumenWorks.Framework.IO.Csv 

let vlookup = 
    let table = new DataTable() 
    do 
    use streamReader = new StreamReader(@"C:\data.csv") 
    use csvReader = new CsvReader(streamReader, hasHeaders=true) 
    table.Load(csvReader) 
    table.PrimaryKey <- [|table.Columns.["Age"]|] 
    fun age (column: string) -> table.Rows.Find([|age|]).[column] 

//Usage 
vlookup "0~15" "Protection" |> printfn "%A" 

Там нет недостатка читателей CSV там. Я использовал this especially fast one (также доступен на NuGet).

4

Так выглядит код при использовании CSV type provider в данных F #. Чтобы это сработало, вам нужно добавить ссылку на FSharp.Data.dll. Лучший способ сделать это - установить пакет из NuGet. В Visual Studio, это добавит ссылку для вас, и в командной строке вы можете сказать:

nuget install FSharp.Data 

В качестве альтернативы, если вы находитесь в файле # сценарий F, то вам необходимо установить пакет NuGet, а затем добавить #r @"C:\path\to\FSharp.Data.dll". Затем вы можете написать следующее:

open FSharp.Data 
// Generate type based on a local copy with sample data 
type Data = CsvProvider<"sample.csv"> 
// Load actual data from a file (this can be a different file with the same structure) 
let loaded = Data.Load("runtime/file/name.csv") 

// Find row for a specified age range & look at the properties 
let row = loaded.Data |> Seq.find (fun r -> r.Age = "0~15") 
row.Protection 
row.Saving 
row.Specified 

 Смежные вопросы

  • Нет связанных вопросов^_^