我正在尝试使用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变量的值?
如果这是一个很容易回答的问题,我会过早地说抱歉。我保证我已经详尽地寻找答案。
答案 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()