I have had a couple of talks about this once and I think you should know about three different concepts.
Attributes can be divided into three different categories. Hard identifiers refer to a specific person, e.g. full name or passport number. A combination of soft identifiers can also be used to identify a single person, because the combination is unique. Sensitive attributes are the ones that infringe privacy and that should be protected.
There are several measures for how anonymous your dataset is. These measures help you to focus on the attributes that need to be altered. In order of increasingly stronger requirements you have:
- A dataset is $k$-anonymous if every combination of soft identifiers occurs at least $k$ times.
- A dataset is $i$-diverse if for every combination of soft identifiers there are at least $i$ different values of the sensitive attributes.
- A dataset is $t$-closed if for every combination of soft identifiers, the distribution of sensitive attributes is not more than $t$ (i.e. KL-divergence) different from the global distribution of sensitive attributes.
Privacy protecting modifications
Hard identifiers can be treated with masking or pseudomization. Masking refers to deleting the hard identifier. A less drastic approach is pseudomization where each records hard identifiers gets a pseudonym (e.g. hash) that is only known by the dataset creator.
Soft identifiers can be treated with suppression, generalisation or randomisation. Suppressing values of soft-identifiers refers to replacing it by a default value (e.g. '*' or the mode). Another strategy, called generalisation, is to create groups of variables that are alike (e.g. 'age 10-20' instead of age 19). A third way is to add randomness to quantitative variables by adding zero-mean noise.
Sensitive attributes can be treated with permutation or randomisation. Permutation refers to permuting the sensitive attributes within every combination of soft identifiers (within a dataset that is at least $2$-anonymous). Like soft identifiers, quantitative sensitive attributes can also be randomised by adding noise.
Ps. as an R-package you could consider
sdcMicro, and this guideline.