gpt4 book ai didi

r - 如何获得用于传递给函数的 group_by 值?

转载 作者:行者123 更新时间:2023-12-02 01:17:35 24 4
gpt4 key购买 nike

我正在尝试使用 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)

我确信我可以调用 unique 并得到它...

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

但是,它看起来很笨重,并且会低效地为每个分组值调用 unique。

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

如果这是一件非常容易回答的事情,我会过早地说对不起。我保证我已经竭尽全力寻找答案。

最佳答案

首先,如果有必要,检查它是否是分组数据框:inherits(data, "grouped_df")

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

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

通常,您不会嵌套在管道链中,而是检查您的函数:

your_function(.x) <- function(x) {
if(inherits(x, "grouped_df")) x <- nest(x)
}

然后,您的函数应使用所有分组的子集迭代列表列 data。如果您在 mutate 中使用函数,例如

mtcars %>% group_by(cyl) %>% mutate(abc = your_function_call(.x))

然后请注意,您的函数直接接收每个组的值,作为类 structure 传递。解释起来有点困难,试一试,一步步调试your_function_call...

关于r - 如何获得用于传递给函数的 group_by 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41884095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com