Accessing DataFrames - is there a simpler way?

Yes, definitely use a function. There are performance benefits to using functions in that Julia can infer types better when things are inside a function. Defining a function and then using it in right there is costless, and makes it easier to write code.

Looking at this code, I’m more convinced you want to be using missing instead of NaN. missing is designed to mean “unknown value”, whereas NaN is something different.

Yes, findfirst is better than occursin because it returns an element of the array. (findfirst returns an integer index, but occursin returns an array of Bools.

Here is another way of writing the above

julia> SP = DataFrame(
           Item = ["a", "a", "b", "b"],
           Name = ["searchLow", "searchUpp", "KPI_1", "KPI_2"],
           Vel_B1_FTF = [NaN, 0.1, 0.4, NaN])
4×3 DataFrame
 Row │ Item    Name       Vel_B1_FTF 
     │ String  String     Float64    
─────┼───────────────────────────────
   1 │ a       searchLow       NaN
   2 │ a       searchUpp         0.1
   3 │ b       KPI_1             0.4
   4 │ b       KPI_2           NaN

julia> KPI_2_exists = let
           ind = findfirst(==("KPI_2"), SP.Name)
           !isnan(SP[!,par][ind])
       end;

julia> Nsta = KPI_2_exists ? 3 : 2
2
1 Like