通过R中的多个列进行聚合

时间:2014-11-11 03:37:34

标签: r

假设我有data.frame名为df

x y z
1 2 3
2 3 4
3 4 5
1 3 4
2 4 5

我想

  1. x
  2. 对数据进行分组
  3. 对于每个子data.frame,请执行func(df$y, df$z)
  4. 如何在没有循环的情况下执行此操作?

2 个答案:

答案 0 :(得分:4)

您可以使用常规plyr

library(plyr)
dlply(df, .(x), function(sub_df) func(sub_df$y, sub_df$z))
# or ddply or daply as desired

dplyr

library(dplyr)
df %>% group_by(x) %>% summarize(func(y, z))

data.table

library(data.table)
df <- as.data.table(df)
df[, func(y, z), by = x]

答案 1 :(得分:2)

你在找这个吗?

# assume df is your data frame
library(dplyr)
df %>% group_by(x) %>% do(...)