如何解决在函数中拉出作为参数给出的列
我有一个函数,它接受一个数据集和一个变量作为参数。它需要根据某些条件进行过滤,将名称作为变量的列拉出来,然后计算其平均值。虽然我无法将变量作为列名传递。请帮忙。
MeanFor <- formula(df,flag,var){
df2 <- df %>% filter(member == flag) %>% pull(var) %>% mean(.)
}
我的 df 看起来像这样
df <- data.frame(name = c("A","B","C","D"),member = c("Y","Y","N"),sales_jan = c("100","0","130","45"),sales_feb = c("44","67","0"))
我可以将标志提供为“Y”/“N”,并希望提供“sales_jan”/“sales_feb”/.../“sales_dec”作为 var 输入。
解决方法
你可以把函数写成:
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
该函数可以用基 R 编写为:
MeanFor <- function(df,var){
mean(as.numeric(subset(df,member == flag)[[var]]))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。