R 按两列分组,然后计算中间值
我有一个数据集,我想计算每个地块每个原产地(本地和外来)的第一次开花日期中位数 我的最终目标是测试在温暖和周围环境中,本地和外来物种的第一朵花的中间日期是否存在显著差异 以下是我的数据子集:R 按两列分组,然后计算中间值,r,dplyr,R,Dplyr,我有一个数据集,我想计算每个地块每个原产地(本地和外来)的第一次开花日期中位数 我的最终目标是测试在温暖和周围环境中,本地和外来物种的第一朵花的中间日期是否存在显著差异 以下是我的数据子集: dput(umbs_firstflower[8:16,]) structure(list(site = c("umbs", "umbs", "umbs", "umbs", "umbs", "umb
dput(umbs_firstflower[8:16,])
structure(list(site = c("umbs", "umbs", "umbs", "umbs", "umbs",
"umbs", "umbs", "umbs", "umbs"), plot = c("A1", "A1", "A1", "A2",
"A2", "A2", "A2", "A3", "A3"), species = c("Sogi", "Sone", "Syla",
"Cest", "Poco", "Popr", "Ruac", "Cest", "Dasp"), origin = c("Native",
"Native", "Native", "Exotic", "Exotic", "Exotic", "Exotic", "Exotic",
"Native"), state = c("ambient", "ambient", "ambient", "warmed",
"warmed", "warmed", "warmed", "ambient", "ambient"), first.flower = c("248",
"240", "227", "195", "169", "155", "156", "194", "185")), row.names = c(NA,
-9L), class = c("tbl_df", "tbl", "data.frame"))
下面是我编写的一个代码示例,用于尝试执行此操作:
umbs <- umbs_firstflower %>% group_by(plot, origin) %>% summarize(mean.firstflw = mean(as.numeric(date))) %>% ungroup()
umbs%group_by(绘图、原点)%%>%summary(mean.firstflw=mean(as.numeric(date)))%%>%ungroup()
这里可能会用到许多显著性测试,因此我将使用一个()来演示解决方案。但请注意,对于3+组,测试中间值之间显著差异的最佳方法,因此您可能希望将此测试换成另一个测试
步骤:
grp
变量,该变量匹配分类列中的各种兴趣组合pivot_wide()
将组作为first.flower
值的列库(tidyverse)
图书馆(magrittr)
df_宽%
变异(first.flower=as.numeric(first.flower),
grp=当(
原点==“本机”&状态==“环境”~“自然环境”,
原点==“本机”&状态==“已预热”~“自然预热”,
原点==“异国情调”&状态==“环境”~“异国情调”,
起源==“异国情调”&状态==“温暖”~“自然温暖”,
真~NA_性格_
)) %>%
枢轴宽度(id\u cols=1:5,name\u from=grp,value\u from=“first.flower”)
全方位
#一个tibble:9x8
场地地块物种起源状态nat_ambi nat_温暖exo_ambi
1 umbs A1 Sogi本地环境248 NA
2 umbs A1 Sone本地环境温度240 NA
3 umbs A1 Syla本地环境227 NA
4 umbs A2 Cest异国情调温暖NA 195 NA
5 umbs A2 Poco异国情调加温NA 169 NA
6 umbs A2 Popr异国情调加温NA 155 NA
7 umbs A2 Ruac异国情调加温NA 156 NA
8 umbs A3 Cest异国情调环境NA 194
9 umbs A3 Dasp本地环境空气185 NA
%$%
magrittr
管道直接运行显著性测试df_-wide%$%kruskal.test(列表(nat_-ambi、nat_-warm、exo_-ambi))
Kruskal-Wallis秩和检验
数据:列表(自然环境、自然温暖、外部环境)
Kruskal-Wallis卡方检验=4.2667,df=2,p值=0.1184
您想计算平均值
还是中值
?数据中没有date
列。你需要表示(如.numeric(first.flower))
吗?是的,我应该这么说。第一栏中的数字是朱利安日期。我想计算中间值。您提供的数据在状态下有“环境”值,但没有“加热”值。如何识别“加热和环境曲线图”?我编辑了示例代码,现在包括了环境和加热状态。谢谢。新数据中没有温暖/异国情调的组合,这是故意的吗?另外,您计划使用什么显著性测试来比较中间值?