如何返回向量的每个组的运行函数,而不是单个值?

时间:2017-04-18 13:24:14

标签: r dplyr

我有一个数据集data.frame(x=rnorm(100),group=c(rep('a',40),rep('b',60))),我想用dplyr分析每个组。例如,我想使用fft。如何在每个返回序列的组上生成运行函数,而不仅仅是值。如果它只是我可以总结的一个值,这在这里不起作用。我期待像data.frame(y=c(21,62,83,4,35,46,17,28), group=c(rep('a',5),rep('b',3)))这样的输出。如果可能的话,我想用dplyr做,因为我认为它提高了可读性。

2 个答案:

答案 0 :(得分:4)

基本上有三种选择:

  1. 如果要为每个组创建一个汇总值,请使用summarize
  2. 如果要转换每个组的每个值,请使用mutate
  3. 如果要为每个组创建一个新表,请使用do
  4. 如果我理解正确的话,最后一个选项似乎最符合你的目的。 do通常是这些选项中最强大的选项,但也是最难使用的选项。一般语法是:

    data %>%
        group_by(grouping_cols) %>%
        do(data_frame(col1 = some_transformation(.$x)))
    

    例如:

    iris %>%
        group_by(Species) %>%
        do(broom::tidy(lm(Sepal.Length ~ Sepal.Width, data = .)))
    

答案 1 :(得分:4)

在使用Option[A]创建unnest输出后,我们可以使用list。使用

会更容易
summarise