简体   繁体   English

拉出 function 中作为参数给出的列

[英]Pull a column given as argument in function

I have a function that takes in a dataset and a variable as argument.我有一个 function 接受一个数据集和一个变量作为参数。 It needs to filter based on some criteria, pull the column with name as variable and calculate its mean then.它需要根据一些标准进行过滤,将名称为变量的列拉出来,然后计算其平均值。 I am not able to pass the variable as column name though.我无法将变量作为列名传递。 Kindly help.请帮忙。

MeanFor <- formula(df, flag, var){
  df2 <- df %>% filter(member == flag) %>% pull(var) %>% mean(.)
}

My df looks like this我的 df 看起来像这样

df <- data.frame(name = c("A","B","C","D"),
member = c("Y","Y","Y","N"), sales_jan = c("100","0","130","45"), sales_feb = c("44","0","67","0"))

I can provide the flag as "Y"/"N" and want to provide "sales_jan"/"sales_feb"/.../"sales_dec" as var input.我可以将标志提供为“Y”/“N”,并希望提供“sales_jan”/“sales_feb”/.../“sales_dec”作为 var 输入。

You can write the function as:您可以将 function 编写为:

library(dplyr)

MeanFor <- function(df, flag, var){
   df %>% filter(member == flag) %>% pull(.data[[var]]) %>% as.numeric() %>% mean
}
df %>% MeanFor('Y', 'sales_jan')
#[1] 76.66667

df %>% MeanFor('Y', 'sales_feb')
#[1] 37

The function can be written in base R as: function 可以在基础 R 中编写为:

MeanFor <- function(df, flag, var){
    mean(as.numeric(subset(df, member == flag)[[var]]))
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM