Reference: setup()

Citation:

The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc. The setup function will only run once, after each powerup or reset of the Arduino board.

but:

If you want to use different setups within the same Arduino program, you can call setup() from within any program or subroutine depending on different conditions. For instance if you need to change outputs into inputs and vice versa.

While it is true you could call setup() again, I can't imagine why you would. Yes you could use a global variable so the function knows it's not the first call and therefore performs different actions, but all this is doing is creating code that's more convoluted than necessary and harder to read.

JeJaTy:
If you want to use different setups within the same Arduino program,

Why not just put that code into another function (or functions) and call it (them) when needed. You can call such functions from within setup() if that is useful.

...R