跨行传递 mean 函数,并将其作为列添加到您传递给它的同一数据集中
Pass mean function across a row, and add it as a column to the same dataset you passed it to
我确定有人问过这个问题,而且有几种方法可以做到这一点。但是,我已经搜索过但仍然找不到有用的东西。我尝试了 'apply' 路线但它不起作用,我认为这可能是 b/c 第一列是一个因素。我想计算整行的平均值,然后将该平均值添加到该行的末尾,在标题为 'mean'
的新列中
这是我的数据框的样子
stream n 1 2 3 4
1 Brooks 3 0.42707006 1.9353659 1.4333884 1.8566225
2 Siouxon 3 0.90503736 0.2838483 0.2838483 1.0023212
3 Speelyai 3 0.08554021 0.7359903 0.4841935 0.7359903
4 Brooks 4 1.43338843 1.8566225 0.0000000 1.3242210
5 Siouxon 4 0.50574543 0.5057454 0.2838483 0.4756304
6 Speelyai 4 0.32252396 0.4343109 0.6653132 2.2294652
7 Brooks 5 0.88984211 1.8566225 0.7741612 1.3242210
但是,列标题为 1、2、3、4 的地方...这将达到 1000!所以实际上有 1002 列,但前两列实际上是向量,一个流名称,然后是样本标识符 n。当我尝试 apply
函数时,它返回了这个:
apply(sim_dat,1,mean)
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#27 28 29 30 31 32 33 34 35 36 37 38 39 40
#NA NA NA NA NA NA NA NA NA NA NA NA NA
#41 42 43 44 45 46 47 48 49 50 51 52 53 54
#NA NA NA NA NA NA NA NA NA NA NA NA NA NA
如果您在计算过程中忽略前两列,则可以使用 rowMeans
。例如
sim_dat$mean <- rowMeans(sim_dat[,-(1:2)])
这将添加一个名为 means
的列,其中包含除前两列之外的每一行的值的平均值。
我确定有人问过这个问题,而且有几种方法可以做到这一点。但是,我已经搜索过但仍然找不到有用的东西。我尝试了 'apply' 路线但它不起作用,我认为这可能是 b/c 第一列是一个因素。我想计算整行的平均值,然后将该平均值添加到该行的末尾,在标题为 'mean'
的新列中这是我的数据框的样子
stream n 1 2 3 4
1 Brooks 3 0.42707006 1.9353659 1.4333884 1.8566225
2 Siouxon 3 0.90503736 0.2838483 0.2838483 1.0023212
3 Speelyai 3 0.08554021 0.7359903 0.4841935 0.7359903
4 Brooks 4 1.43338843 1.8566225 0.0000000 1.3242210
5 Siouxon 4 0.50574543 0.5057454 0.2838483 0.4756304
6 Speelyai 4 0.32252396 0.4343109 0.6653132 2.2294652
7 Brooks 5 0.88984211 1.8566225 0.7741612 1.3242210
但是,列标题为 1、2、3、4 的地方...这将达到 1000!所以实际上有 1002 列,但前两列实际上是向量,一个流名称,然后是样本标识符 n。当我尝试 apply
函数时,它返回了这个:
apply(sim_dat,1,mean)
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#27 28 29 30 31 32 33 34 35 36 37 38 39 40
#NA NA NA NA NA NA NA NA NA NA NA NA NA
#41 42 43 44 45 46 47 48 49 50 51 52 53 54
#NA NA NA NA NA NA NA NA NA NA NA NA NA NA
如果您在计算过程中忽略前两列,则可以使用 rowMeans
。例如
sim_dat$mean <- rowMeans(sim_dat[,-(1:2)])
这将添加一个名为 means
的列,其中包含除前两列之外的每一行的值的平均值。