Jen*_*Jen 5 r sapply dplyr dcast
我正在尝试为具有多个组的数据框的多列找到不包括 NA 的方法
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
Run Code Online (Sandbox Code Playgroud)
所以我得到一个带有数字的名称列表,所以我知道要选择哪些列:
nam<-names(airquality)
namelist <- data.frame(matrix(t(nam)));namelist
Run Code Online (Sandbox Code Playgroud)
我想按城市和年份计算 PM25、臭氧和二氧化碳的平均值。这意味着我需要第 1,2,4,6:7 列)
acast(datadf, year ~ city, mean, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
但这并不是我真正想要的,因为它包含了我不需要的东西的平均值,而且它不是数据帧格式。我可以转换它然后删除,但这似乎是一种非常低效的方法。
有没有更好的办法?
akr*_*run 11
按感兴趣的列分组后,我们可以使用dplyrwithsummarise_at来获取相关列mean
library(dplyr)\nairquality %>%\n group_by(City, year) %>% \n summarise_at(vars("PM25", "Ozone", "CO2"), mean)\nRun Code Online (Sandbox Code Playgroud)\n\n或者使用(version - )devel的版本dplyr\xe2\x80\x980.8.99.9000\xe2\x80\x99
airquality %>%\n group_by(City, year) %>%\n summarise(across(PM25:CO2, mean))\nRun Code Online (Sandbox Code Playgroud)\n