根据列索引的给定列中的常见值聚合 R 中的多行



这是一个非常相似的问题:

根据给定列中的常见值聚合 R 中同一 data.frame 的多行

在我的情况下,列的选择在不同的模拟样本中正在发生变化。我在每次模拟中都有选定的列索引。如何在索引而不是变量名称上使用函数aggregate?也就是说,在回答这个问题时,我如何使用这样的代码:

c=c(1,2,3)
aggregate(value ~ df[,c], FUN = mean, data=df) # comparing to aggregate(value ~ item + size + weight, FUN = mean, data=df)

(请注意,上面的行不会在 R 中运行。

感谢您的任何帮助!

不使用公式方法,对列"value"和by中的分组列进行子集化,并指定函数

aggregate(df["value"], df[,c], FUN = mean)
#.  item size weight value
#1    B    1      2     3
#2    C    3      2     1
#3    A    2      3     5

使用公式方法,将分组列与我们要获取mean的列一起子集化,并使用.指定子集数据集中的所有列

aggregate(value ~ ., data= df[, c('value', names(df)[c])], mean)
#   item size weight value
#1    B    1      2     3
#2    C    3      2     1
#3    A    2      3     5

--

如果我们想使用dplyr,使用group_by_at并指定其中的c变量

library(dplyr)
df %>% 
group_by_at(c) %>% 
# or extract column names, convert to symbol, and evaluate (!!!)
#group_by(!!! rlang::syms(names(.)[c])) %>%
summarise(value = mean(value))
# A tibble: 3 x 4
# Groups:   item, size [?]
#  item   size weight value
#  <fct> <int>  <int> <dbl>
#1 A         2      3     5
#2 B         1      2     3
#3 C         3      2     1

注意:输入数据集取自OP帖子中的链接

最新更新