Starting with making sure the reference designators are unique is a good start.
After that, for the actual merge, you can:
1. Create a new / clean / empty project.
2. Copy the existing schematic sheets into that project.
3. Create the hierarchy to use those schematic files.
That should do it for the schematic. For merging the parts of the different PCB's you need a bit of a different workflow. First a bit of preparation:
1. Create the PCB by opening the PCB editor in the project.
2. Save the (nearly) empty file.
3. Exit KiCad
After this preparation you can use KiCad in the "Standalone Mode" to merge the actual PCB's together.
KiCad enters the "Standalone Mode" when one of it's sub programs is started directly from your OS, so without a project active. Because there is no project, some options are missing (there is no link between a schematic and a PCB), but other options get enabled, for example PCB Editor / File / Append Board. With this "Append Board" function, you can one by one open the PCB files from the other projects and append their contents to your new project.
Another option is to open multiple instances of KiCad, and then use copy and paste, but do not use >[Ctrl + V] to paste, but right click on the canvas and select Paste Special from the popup menu, and then make sure you select the option: Keep existing reference designators, even if they are duplicated during pasting.
Up to here it's pretty much the same aw what julian1 wrote, but now there is a difference.
Because there is no link between a schematic and a pcb in the "Standalone" mode, you can not fix the links between the schematic and the Pcb in this way. So after you've added the contents of the other PCB files to your new project, Close the "Standalone" instances of KiCad again, and open the project in the normal way.
KiCad has several ways of linking schematic symbols with actual footprints on the PCB. Normally it uses UUID's, but I do not know if these get preserved with the above method. It is simple to check this though. Just use Schematic Editor / Tools / Update PCB from Schematic [F8]. If this creates new footprints on the PCB (still all attached to the mouse cursor), then abort, go back to the schematic, and do it again, but now with the Re-link footprints to schematic symbols based on their reference designators.
@julian1 You wrote "reassociate by reference", which is the same method, but it's old terminology. I think from KiCad V5. Is your KiCad version that old?