【发布时间】:2017-08-03 02:34:48
【问题描述】:
我正在考虑基于 dplyr 包创建函数。我见过几个例子,比如 janitor package 和 Organism.dplyr。但是,我不知道我可以扩展或固有 dplyr 功能,或者即使有可能。
例如。我想要什么:
数据 %>% group_by(columnX) %>% my_mutate_like_function()
但是,它不起作用,我看到一篇关于它的帖子,使用 do() 作为替代方法... 但是,这不是我想要的。
谁能帮帮我?谢谢。
== 遵循代码示例(已编辑)==
data <- data.frame(groupname = c('A', 'B', 'A', 'A', 'B', 'B'),
value = c(1, 3, 4, 2, 1.4, 5))
my_mutate_like_function <- function(data) {
data$category <- ifelse(data$value <= mean(data$value), 'In', 'Out')
data$meanvalue <- mean(data$value)
data
}
data_works <- data %>% group_by(groupname) %>%
mutate(category = ifelse(value <= mean(value), 'In', 'Out'), meanvalue = mean(value))
# That's the right output, each "groupname" had their average calculated and it was used a threshold value
data_fails <- data %>% group_by(groupname) %>%
my_mutate_like_function()
# The group_by properties seems not work inside my function
【问题讨论】:
-
您能否展示无法与数据样本和预期输出一起工作的代码?
-
我添加了一个代码示例。
-
对不起,如果这是一个愚蠢的评论,但是在你的函数中使用 dplyr 怎么样,即一个包装器?还是你想在你的函数中使用“baseR 方法”?
-
如果理解您的建议,这就像在我的函数中写一个“dplyr::mutate”。是吗?所以,实际上,我正在以这种方式编码......但是,问题是,即使像这样编码,函数仍然没有“扩展” dplyr::group_by 行为。你能给我一个关于你的建议的代码 sn-p 吗?