我有一个数据框,其中有一个日期列和几个值列(测量浓度)。我正在修改数据框,并使用值的平均值汇总为年份。这样做效果很好:
library(dplyr)
df <- data.frame(mydate=as.Date(c("2000-01-15", "2000-02-15", "2000-03-15")), columnA=c(2, 4, 5), columnB=c(3, 6, 7))
df_year <- df %>%
mutate(year = format(mydate, format="%Y")) %>%
group_by(year) %>%
summarise(across(where(is.numeric), ~ mean(.x, na.rm = TRUE)))
上面的代码给出了平均值。是否可以使用ifelse并仅在名称包含“B”的列中使用n-百分位数对df_year进行汇总?也就是说,columnA仍将汇总为平均值,但columnB将汇总为百分位数。
我知道如何计算分位数,但我无法有效地使用ifelse。我不想创建新的 Dataframe ,因为它包含多个列,稍后在绘图时会循环通过这些列。我使用grepl捕获“B”,但得到错误“unused argument”。我正在查找类似以下内容:
mutate...%>%
group_by...%>%
ifelse(grepl("B", each_column_name, fixed=TRUE)==TRUE,
summarise(across(where(is.numeric), ~ quantile(.x, probs=0.9, na.rm = TRUE))),
summarise(across(where(is.numeric), ~ mean(.x, na.rm = TRUE))))
1条答案
按热度按时间yeotifhr1#
across
的第一个参数可以合并多种选择方式,包括添加matches("B")
: