r - 通过独特的组合扩展数据框并计算它们的平均值

标签 r combinations

我正在尝试将行附加到具有现有类组合的数据集。然后我想计算独特的类组合的平均值。它类似于成对事后测试,但我想将其他列保留在我的数据集中。

示例数据集:

<表类=“s-表”> <标题> 类(class) 值 治疗 <正文> 一个 1 1 B 2 1 c 3 1

我想要的结果:

<表类=“s-表”> <标题> 类(class) 平均值 治疗 <正文> 一个 1 1 B 2 1 c 3 1 AB 1.5 1 交流 2 1 ABC 3 1 BC 2.5 1

我尝试过combn,但它没有给我我想要的数据表。我试图获得类似于 HSD.test 的输出,但不会丢失数据集的其余部分。我可以以某种方式使用 Expand.grid 函数吗?感谢您的帮助

最佳答案

您可以像这样使用combn:

do.call(c, lapply(seq_along(df$Class), \(m) combn(df$Class, m, FUN = \(x) paste(x, collapse = ""))))
#[1] "A"   "B"   "C"   "AB"  "AC"  "BC"  "ABC"

do.call(c, lapply(seq_along(df$Class), \(m) combn(df$Class, m, FUN = \(x) mean(df$Value[match(x, df$Class)])))
#[1] 1.0 2.0 3.0 1.5 2.0 2.5 2.0

dplyr 框架中:

library(dplyr)
df %>% 
  reframe(Mean = do.call(c, lapply(seq_along(Class), \(m) combn(Class, m, FUN = \(x) mean(Value[match(x, Class)])))), 
          Class = do.call(c, lapply(seq_along(Class), \(m) combn(Class, m, FUN = \(x) paste(x, collapse = "")))), 
          Treatment = 1) %>% 
  select(Class, Mean, Treatment)

#   Class Mean Treatment
# 1     A  1.0         1
# 2     B  2.0         1
# 3     C  3.0         1
# 4    AB  1.5         1
# 5    AC  2.0         1
# 6    BC  2.5         1
# 7   ABC  2.0         1

关于r - 通过独特的组合扩展数据框并计算它们的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75972705/

相关文章:

r - 在 R 中开发包时清除以前版本的函数

r - 如何加快将数据加载到 R 中的速度?

r - 在长数据集中添加两个分类变量的行?

r - 无法安装 Plotly

python - Numpy 通过 OR 运算组合两个 MaskedArray

r - 通过替换具有多种可能性的字符来生成所有组合的列表

R:从数据计数生成直方图

algorithm - 多重集的 k 组合没有通用解决方案吗?

python - 如何加速 itertools 组合?

Python:使用负函数比较元胞数组