When I do this with your data example I get:
df.dcast <- dcast(df, partNumber + manufacturer ~ supplier, value.var="availability")
df.dcast
partNumber manufacturer s1 s2 s3
1 p1 m1 100 500 NA
2 p2 m2 200 NA 300
What's most likely happening is that your availability
column is not what you think it is. Perhaps it got converted to a factor variable because there was some text in that column in the input file. If that's the case then you need to read R-FAQ 7.10