You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SNK.test的groups结果添加trt水平并按trt升序排序

问题:将SNK检验的groups列合并至原数据集

我已对数据集执行SNK检验,使用的数据及代码如下:

response = c (28.16, 29.36, 35.44, 37.1, 4.9, 5, 5.12, 8.8958333, 11.1, 8.5, 4.48, 3.28, 3.92, 8.24, 1.5714285, 6.02, 3.14, 2.84, 5.54, 3.24, 12.62, 7.66, 15.06, 2.2857142, 1.48, 1.94, 7.22, 1.48, 5.14, 1.66, 15.66, 2.98, 4.26, 0.2653061, 10.26, 23.02, 4.12, 0.64, 10.16, 1.36, 3.22, 5.2448979, 0.28, 0.26, 1.2653061, 0.7826086, 0.46, 0.78)
trt = c (001, 001, 001, 001,  002, 002, 002, 002,  003, 003, 003, 003, 004, 004, 004, 004, 005, 005, 005, 005, 006, 006, 006, 006, 007, 007, 007, 007, 008, 008, 008, 008, 009, 009, 009, 009, 010, 010, 010, 010,  011, 011, 011, 011, 012, 012, 012, 012)
rep = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)  
df <- data.frame(response, trt, rep)
df$response <- as.numeric(df$response)
df$trt <- as.factor(df$trt)
df$rep <- as.factor(df$rep)
model <- aov(response ~ trt + rep, data = df)
mc_SNK <- SNK.test(model,"trt", console=TRUE, group = TRUE)

我的目标是获取groups列并合并至原数据集,但mc_SNK$groups中缺少trt列,且结果按response降序排列,需要为其添加trt列,或将结果按trt编号升序排列,以完成关联合并操作。


解决方案

方法一:为mc_SNK$groups添加trt列后合并

SNK.test返回的groups数据框的行名就是对应的trt水平,直接提取行名作为trt列,再与原数据集合并即可:

# 提取行名作为trt列
mc_SNK$groups$trt <- rownames(mc_SNK$groups)
# 转换为与原数据集一致的因子类型,避免匹配错误
mc_SNK$groups$trt <- factor(mc_SNK$groups$trt, levels = levels(df$trt))
# 合并至原数据集
df_merged <- merge(df, mc_SNK$groups, by = "trt")

方法二:按trt升序排列groups后合并

若需要先将groups按trt编号升序排列,再进行合并:

# 按trt行名升序排序groups
groups_sorted <- mc_SNK$groups[order(rownames(mc_SNK$groups)), ]
# 添加trt列(可选,便于查看关联关系)
groups_sorted$trt <- rownames(groups_sorted)
# 合并至原数据集
df_merged <- merge(df, groups_sorted, by = "trt")

内容的提问来源于stack exchange,提问作者Betty888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:02:40