I'm working with a dataset of elemental concentrations in polluted soils. Using the same units, some elements have high values and some have low values. If the concentration of some element is too low in any given soil it can't be determined, so I have missing values (they could be approximated, though), and polluted places have much higher values, so they are outliers and most variables are not normally distributed. I want to group soils with similar profiles, and if possible know what elements (variables) make them similar or different. The methods I know (like PCAs) can't be applied here, so what method could be?
If you know for certain that your missing values only occur where an element is below the limit of detection (L.O.D.), I would argue that an approximation of half of the value of the L.O.D. would be better than treating them as missing values.
Have you considered transforming your variables so you can use them in analyses that you're familiar with?
Have a look at similarity matrices and hierarchical cluster analysis. If you already have defined groups that you know are similar, you may also find it worth taking a look at Random Forests - they can be used with categorical data as the response variable, and deal with various explanatory variable data types and missing values (although you still need to be careful to consider issues that these might cause in terms of bias, and take a look at conditional importance vs. the original variable importance score).