使用平均值计算从数据框中创建矩阵

时间:2019-05-08 10:07:54

标签: r dataframe matrix

我需要使用r的帮助。

实际上我有一个数据框,例如:

Groups  Species Value
Group1  Sp1 0.1
Group1  Sp1 0.2
Group1  Sp2 0.3
Group1  Sp3 0.4
Group1  Sp4 0.5
Group2  Sp2 0.6
Group2  Sp3 0.7
Group2  Sp4 0.8
Group3  Sp1 0.9
Group3  Sp3 0.10
Group3  Sp3 0.11
Group3  Sp3 0.14

(顺便说一句,如果有人具有允许以编码格式导出数据帧的功能,那我会更好)

想法是将该数据帧转换为另一个数据帧。

您会看到3 groups,并且在组内我们可以拥有duplicate species,例如Sp1 in Group1

所以我应该得到一个像这样的矩阵:

    Group1  Group2  Group3
Sp1 0.15    NA  0.9
Sp2 0.3 0.6 NA
Sp3 0.4 0.7 0.1167
Sp4 0.5 0.8 NA

从此输出中可以看到,我将“组”放在行Species的列中,其值是Values中的first data frame

但是最重要的是,当存在重复的Sp1 in Group1Sp3 in Group3时,我会计算这些值的平均值。

有人为此有一个主意吗? ultime对象是从此矩阵中获取heatmap

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

summarisemeanspread

library(dplyr)

df %>%
 group_by(Groups, Species) %>%
 summarise(Value = mean(Value)) %>%
 tidyr::spread(Groups, Value)

#  Species Group1 Group2 Group3
#  <fct>    <dbl>  <dbl>  <dbl>
#1  Sp1       0.15    NA   0.9  
#2  Sp2       0.3     0.6  NA    
#3  Sp3       0.4     0.7  0.117
#4  Sp4       0.5     0.8  NA