How to replace only SOME missing data I have two types of missing data (non-responses and "Don't know or does not apply") and I want to replace only the non-responses (with mean or by using EM or by using Multiple Imputation) and to see if this is a good solution. How can this be done in SPSS? Even in the simplest case, when replacing missing values with mean for example, I can't find a way to impute only some of the missing data, in this case the non-responses?
 A: The easiest solution to your problem is to not to treat "don't know" as missing but a separate data type in itself. By this I mean if you currently have 3 categories, with NA, make it four categories and NA where category 4 is "don't know". After this you can use the standard EM methods
There are 2 points I want to make in connection with @Rociante's reply. 
1) I think he/she means f(i) = 0.5*(f(i-1) + f(i+1)). I would not recommend taking the average of the previous and the next in general because a) you do not know that consecutive points are related and b) you seem to have categorical types in which case this does not make sense anyways. If you must, use the MLE estimate.
2) Be very careful while dealing with NULLs in different langauges. Go through the documentation carefully when implementing the pseudo-code. You cannot say for example i=='NULL' in python and in fact most languages will not allow it (not sure of SPSS). Most languages treat NULL as its own type which can be anything. In python you would say 
try:
i = i + 0

except:
and in R you could use is.na(..)
A: I am going to generalize my response instead of making it SPSS-specific (as that's probably against the forum rules). You need to write a loop that goes through your data set. This loop goes through all the values in your data set and replaces the null with the average of the values that come immediately before(i-1) and immediately after (i+1) the null (i.e. non-response). If your data set is small enough, you can also do the calculation manually instead of writing the loop. The pseudo-code is:
for (i=2:n)
{
  if(i=="null")
  {
   i = ((i-1)+(i+1))/2
  }
  else
  { 
    i++
  }
}

