gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:56:21 24 4
gpt4 key购买 nike

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

示例数据集:

<表类=“s-表”><标题>类(class)值治疗 <正文>一个11B21c31

我想要的结果:

<表类=“s-表”><标题>类(class)平均值治疗 <正文>一个11B21c31AB1.51交流21ABC31BC2.51

我尝试过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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com