gpt4 book ai didi

r - dplyr使用数据框功能进行汇总

转载 作者:行者123 更新时间:2023-12-04 08:52:09 25 4
gpt4 key购买 nike

我在使用 dplyr 软件包执行例程时遇到了一些麻烦。简而言之,我有一个将数据框作为输入并返回单个(数字)值的函数。我希望能够将此功能应用于数据框的多个子集。感觉我应该能够使用group_by()指定数据帧的子集,然后通过管道传递到summary()函数,但是我不确定如何将(子集)数据帧传递给我的函数。 d想申请。

作为一个简化的示例,假设我使用的是 iris 数据集,并且我有一个相当简单的函数,希望将其应用于数据的几个子集:

data(iris)
lm.func = function(.data){
lm.fit = lm(Petal.Width ~ Petal.Length, data = .data)
out = summary(lm.fit)$coefficients[2,1]
return(out)
}

现在,我希望能够基于其他变量(例如 Species )将此功能应用于 虹膜的子集。我能够手动过滤数据,然后通过管道传递到我的函数,例如:
iris %>% filter(Species == "setosa") %>% lm.func(.)

但是我希望能够基于Species将 lm.func 应用于数据的每个子集。我的第一个想法是尝试执行以下操作:
iris %>% group_by(Species) %>% summarize(coef.val = lm.func(.))

即使我知道这行不通,但我的想法是尝试将虹膜的每个子集传递给lm.func函数。

为了澄清起见,我想最后得到一个包含两列的数据框-当数据限制为分组变量。

是否可以通过这种方式使用summary()?

最佳答案

您可以尝试使用do

 iris %>% 
group_by(Species) %>%
do(data.frame(coef.val=lm.func(.)))
# Species coef.val
#1 setosa 0.2012451
#2 versicolor 0.3310536
#3 virginica 0.1602970

关于r - dplyr使用数据框功能进行汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319025/

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