It could be a sticking iacv or just a bad base idle setting the throttle bodies tend to gum up with contaminants. Remove the idle bleed screw and clean out the hole and the end of the screw.
Then screw it back in and adjust it. You need a scan tool to set the iac command.
It can be ball parked , somewhere between 1 1/2 and 3 turns out from screwed in all the way.
then it needs to be idled for 15 min. after its warmed up to allow the pcm idle learn to happen.
It should be ok then , but if not, the iavc may need to be replaced.
also check the valve adjustment