First, don't ever detach the interrupt. You will miss counts that way. The proper way of temporarily suspending interrupts while you grab a "clean copy" of the volatile variable is to use the noInterrupts() function. This works on all variants on the Arduino. Sometimes you will see cli() used in the same way, but that only works on the AVR Arduinos. noInterrupts() is actually a macro which calls the correct variant of cli() for your board.
Second, to get a long-term average of something like RPM, it's mathematically incorrect to average the RPM of each second. You're taking an average of averages. It's much better to count the pulses for the whole minute and then divide that number by 60 seconds.
Do you still need to have the one-second readings? It's not clear from your initial request if you still need to display the 1-second readings somewhere. If all you need to do is change from 1 second to 60 seconds, then replace every instance of "1000" with "DATALOG_INTERVAL" and then put this at the top of your code:
#define DATALOG_INTERVAL 60000 //milliseconds - the time between logging the data readings
Once you've done that, then changing from 60 seconds to any other period is very easy - just change that one line and all the calculations dependent on it will change.