如何获取group_by值以用于传递给函数?

时间:2017-01-26 22:26:22

标签: r dplyr

我正在尝试使用dplyr将函数应用于使用group_by函数分组的数据框。我正在使用do()将一个函数应用于分组数据的每一行。我想获取group_by变量的值,以便我可以在函数调用中使用它。

所以,实际上,我有 -

tmp <-
  my_data %>%
  group_by(my_grouping_variable) %>%
  do(my_function_call(data.frame(x = .$X, y = .$Y),
                      GROUP_BY_VARIABLE)

我确信我可以打电话给我,并且得到它......

do(my_function_call(data.frame(x = .$X, y = .$Y),
                    unique(.$my_grouping_variable))

但是,它似乎很笨拙,而且对于每个分组值都会低效地调用它。

有没有办法在dplyr中获取group_by变量的值?

如果这是一个很容易回答的问题,我会过早地说抱歉。我保证我已经详尽地寻找答案。

2 个答案:

答案 0 :(得分:2)

首先,如有必要,请检查它是否为分组数据框:using Windows.UI.Xaml.Controls; namespace MydesqAccordionUserControl { public class MydesqAccordionControl : ItemsControl { public void CollapseOtherItems(MydesqAccordionItem item) { if (Items != null) { foreach (var mydesqAccordionItem in Items) { if (!mydesqAccordionItem.Equals(item)) { (mydesqAccordionItem as MydesqAccordionItem)?.CollapseContent(); } } } } } }

如果您想要数据帧的子集,可以嵌套组:

inherits(data, "grouped_df")

通常,您不会在管道链中嵌套,但请检查您的功能:

mtcars %>% group_by(cyl) %>% nest()

然后,您的函数应使用所有分组子集迭代列表列your_function(.x) <- function(x) { if(inherits(x, "grouped_df")) x <- nest(x) } 。如果你在mutate中使用一个函数,例如

data

然后请注意,您的函数直接接收每个组的值,并作为类mtcars %>% group_by(cyl) %>% mutate(abc = your_function_call(.x)) 传递。这有点难以解释,只需逐步尝试并逐步调试structure ......

答案 1 :(得分:0)

您可以使用your_function_call,但不存在SE版本,因此我不确定它在编程中的用途。

groups()