Significa columnas múltiples por grupos múltiples

Estoy tratando de encontrar los medios, sin incluir NA, para múltiples columnas dentro de un marco de datos por múltiples grupos

airquality <- data.frame(City = c("CityA", "CityA","CityA",
                                  "CityB","CityB","CityB",
                                  "CityC", "CityC"),
                         year = c("1990", "2000", "2010", "1990", 
                                  "2000", "2010", "2000", "2010"),
                         month = c("June", "July", "August",
                                   "June", "July", "August",
                                   "June", "August"),
                         PM10 = c(runif(3), rnorm(5)),
                         PM25 = c(runif(3), rnorm(5)),
                         Ozone = c(runif(3), rnorm(5)),
                         CO2 = c(runif(3), rnorm(5)))
airquality

Entonces obtengo una lista de los nombres con el número para saber qué columnas seleccionar:

nam<-names(airquality)
namelist <- data.frame(matrix(t(nam)));namelist

Quiero calcular la media por ciudad y año para PM25, ozono y CO2. Eso significa que necesito columnas 1,2,4,6: 7)

acast(datadf, year ~ city, mean, na.rm=TRUE)

Pero esto no es realmente lo que quiero porque incluye la media de algo que no necesito y no está en un formato de marco de datos. Podría convertirlo y luego soltarlo, pero esa parece ser una forma muy ineficiente de hacerlo.

¿Hay una mejor manera?

Respuestas a la pregunta(4)

Su respuesta a la pregunta