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

标签 r group-by dplyr

我在使用 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/

相关文章:

mysql - SQL 不同元素按相同元素计入一组

mysql 按两列分组

r - dplyr - 使用 rowwise() 应用自定义函数

R 从向量连接表列

r - 查找不同变量中出现的次数

r - 如何在 R 中将字符串转换为列表

r - 在不指定列名的情况下将列转换为行

r - 存在并应用 : why are these functions different?

MySQL 需要有关查询的建议

根据 R 列中的重复项删除行