R 如何在函数中引用和取消引用变量,并在数据帧上迭代
我试图获取一个函数并在值的数据帧上迭代。这里的目标是按10人一组总结机场延误情况 如何将传递到函数中的内容的值作为名称?列原点(EWR、LGA、JFK)应另存为列,并且仍需要将其传递到group by函数中R 如何在函数中引用和取消引用变量,并在数据帧上迭代,r,dplyr,purrr,rlang,R,Dplyr,Purrr,Rlang,我试图获取一个函数并在值的数据帧上迭代。这里的目标是按10人一组总结机场延误情况 如何将传递到函数中的内容的值作为名称?列原点(EWR、LGA、JFK)应另存为列,并且仍需要将其传递到group by函数中 图书馆(tidyverse) 图书馆(nycflights13) 主管(航班) #>#tibble:6 x 19 #>年-月-日折旧时间计划折旧时间延迟到货时间计划到货时间 #> #> 1 2013 1
图书馆(tidyverse)
图书馆(nycflights13)
主管(航班)
#>#tibble:6 x 19
#>年-月-日折旧时间计划折旧时间延迟到货时间计划到货时间
#>
#> 1 2013 1 1 517 515 2 830 819
#> 2 2013 1 1 533 529 4 850 830
#> 3 2013 1 1 542 540 2 923 850
#> 4 2013 1 1 544 545 -1 1004 1022
#> 5 2013 1 1 554 600 -6 812 837
#> 6 2013 1 1 554 558 -4 740 728
#> # ... 还有11个变量:到达延迟、承运人、航班、,
#>#尾数、起点、终点、空中时间、距离、,
#>#小时,分钟,时间#小时
全部汇总%select(原点),
航班%>%计数(天)%%>%机头(2)%%>%选择(天)
)
总摘要(航班、天数、到达延误)
#>分组依据(pcts,col\u nm)中出错:未找到对象“pcts”
purrr::walk(参数,~ntile_摘要(航班,!始发地,到达延迟))
#>错误!来源:参数类型无效
由(v0.3.0)于2020-03-15创建在
变异后,连接为。没有%%>%%
ntile_summary <- function(data, by, var) {
by <- enquo(by)
var <- enquo(var)
data %>%
mutate(pcts = ntile(!!by, n = 10),
col_nm = !!by) %>%
group_by(pcts, col_nm) %>%
summarize(avg = mean(!!var, na.ram = TRUE))
}
ntile_summary(flights, day, arr_delay)
# A tibble: 40 x 3
# Groups: pcts [10]
# pcts col_nm avg
# <int> <int> <dbl>
# 1 1 1 NA
# 2 1 2 NA
# 3 1 3 NA
# 4 1 4 -4.44
# 5 2 4 NA
# 6 2 5 NA
# 7 2 6 NA
# 8 2 7 NA
# 9 3 7 NA
#10 3 8 NA
# … with 30 more rows
我意识到我的例子没有被清晰地考虑出来。我需要修改它,使其适用于我的真实数据集。
ntile_summary <- function(data, by, var) {
data %>%
mutate(col_nm = {{by}}, pcts = ntile({{by}}, n = 10)) %>%
group_by(pcts, col_nm) %>%
summarize(avg = mean({{var}}, na.ram = TRUE))
}
ntile_summary(flights, day, arr_delay)
# A tibble: 40 x 3
# Groups: pcts [10]
# pcts col_nm avg
# <int> <int> <dbl>
# 1 1 1 NA
# 2 1 2 NA
# 3 1 3 NA
# 4 1 4 -4.44
# 5 2 4 NA
# 6 2 5 NA
# 7 2 6 NA
# 8 2 7 NA
# 9 3 7 NA
#10 3 8 NA
# … with 30 more rows