Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按两列分组,然后计算中间值_R_Dplyr - Fatal编程技术网

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))
    吗?是的,我应该这么说。第一栏中的数字是朱利安日期。我想计算中间值。您提供的数据在
    状态下有“环境”值,但没有“加热”值。如何识别“加热和环境曲线图”?我编辑了示例代码,现在包括了环境和加热状态。谢谢。新数据中没有温暖/异国情调的组合,这是故意的吗?另外,您计划使用什么显著性测试来比较中间值?