It’s because your function is wrongly specified: You check if x == v where x is an element in the vector v.
You could do
v2 = ["saba","daba","myy","aba","oba"]
transform(myd, :b => v -> [findfirst(isequal(i), v) for i in v2])
To be more efficient, you should probably create a Dict{String, Int} that maps strings to indices, then use that to look up. Something like
d = Dict(s => i for (i, s) in enumerate(v2))
myd.pos = [d[s] for s in myd.b]