Sociolinguistic variation in code-switching and code-mixing