基于矩阵中的一列平均所有其他列

时间:2018-06-14 21:39:17

标签: r matrix aggregate average mean

我需要根据另一列中的名称对大量列进行平均。我的矩阵看起来像这样(具有单独的唯一行名称):

Names       X1  Y1  Z1  X2  Y2  Z2
P.maccus    4   2   2   6   5   3
P.maccus    6   5   3   7   6   5
P.maccus    8   3   2   8   7   3
A.ammophius 3   6   2   7   5   5
P.sabaji    2   5   3   8   4   5
P.sabaji    4   6   3   9   6   5
P.sabaji    5   7   2   8   7   3
P.sabaji    3   5   3   9   5   4

我需要将每行平均看起来像这样:

Names       X1  Y1      Z1      X2  Y2  Z2
P.maccus    6   3.33    2.33    7   6   3.66
A.ammophius 3   6       2       7   5   5
P.sabaji    3.5 5.75    2.75    8.5 5.5 4.25

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用dplyr非常简单。你可以做到

dd %>% group_by(Names) %>% summarize_all(mean)

使用以下数据进行测试

dd<-read.table(text="Names       X1  Y1  Z1  X2  Y2  Z2
P.maccus    4   2   2   6   5   3
P.maccus    6   5   3   7   6   5
P.maccus    8   3   2   8   7   3
A.ammophius 3   6   2   7   5   5
P.sabaji    2   5   3   8   4   5
P.sabaji    4   6   3   9   6   5
P.sabaji    5   7   2   8   7   3
P.sabaji    3   5   3   9   5   4", header=TRUE)

答案 1 :(得分:0)

您可以使用aggregate()

假设您的数据矩阵位于名为df的变量中:

aggregate(. ~ Names, data=df, FUN=mean)

        Names  X1       Y1       Z1  X2  Y2       Z2
1 A.ammophius 3.0 6.000000 2.000000 7.0 5.0 5.000000
2    P.maccus 6.0 3.333333 2.333333 7.0 6.0 3.666667
3    P.sabaji 3.5 5.750000 2.750000 8.5 5.5 4.250000