performance tuning – Replacing an part in a dataset

I have a nested dataset, which has been created to be the correct size from using Table, and I wish to replace parts of the dataset with the data. My dataset would look like (with placeholder values for the number of repeats etc, so that you can run the code yourself):

NumberOfRepeats = 3;
AllParameters = {58422.1`, 58427.6959583`, 58433.2919159`, 
   58438.8878726`, 58444.4838286`, 58450.0797838`, 58455.6757383`, 
   58461.2716919`, 58466.8676448`, 58472.4635969`, 58477.1595489`, 
   58480.3555014`, 58483.5514534`, 58486.7474049`, 58489.9433561`, 
   58493.1393068`, 58498.135255`, 58503.7312019`, 58509.3271479`, 
   58514.9230932`};
NumberOfExperiments = 5;
NumberOfWaveforms = 2;

NumberOfBlocks = 20;

(*Create dataset for data*)
Blocks = Table(<|"Block Number" -> i, 
    "Parameters" -> <|"Freq" -> AllParameters((i))|>, 
    "Waveforms" -> 
     Table(<|"Waveform Type" -> j, 
       "Repeats" -> 
        Table(<|"Repeat number" -> k, "Spectrum" -> {}, 
          "Fitting Parameters" -> {}|>, {k, NumberOfRepeats}), 
       "Fitting Parameter" -> {}, "Spectral Splitting" -> {}|>, {j, 
       NumberOfWaveforms})|>, {i, NumberOfBlocks});

DatasetRawDataAnomaly = 
 Table(<|"Experiment" -> i, "Data" -> Blocks|>, {i, 
    NumberOfExperiments}) // Dataset

My issue is wanting to replace an element of that dataset. I have tried using ReplacePart, but I need to make so many changes, that it is too slow, taking up to half an hour with the code I am running this in. An example of what I would do is:

DatasetRawDataAnomaly = ReplacePart(DatasetRawDataAnomaly,
   {ExperimentType, "Data", BlockType, "Waveforms", WaveformType, 
     "Repeats", RepeatCounter, "Spectrum"} -> IntensityType);

Where IntensityType is a list of lists of values of the form {{1,2},{3,4},{5,6}…}

I think running something like:

IntensityType = {{1, 2}, {2, 3}, {3, 4}};

DatasetRawDataAnomaly(1, "Data", 1 , "Waveforms", 1, "Repeats", 1 , 
{(<|#, "Spectrum" -> {IntensityType}|> &)}) (*Ones for: Experiment number, 
Block 1, Waveform 1, Repeat 1*);

would be quicker, but is there a way to change the whole dataset, rather than extracting the part and changing it?

Thank you for any help you can provide.