在一行中传递平均函数,并将其作为列添加到您传递给它的同一数据集中

时间:2015-08-05 02:48:41

标签: r 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 

1 个答案:

答案 0 :(得分:0)

如果您在计算过程中忽略前两列,则可以使用rowMeans。例如

sim_dat$mean <- rowMeans(sim_dat[,-(1:2)])

这将添加一个名为means的列,其中包含除前两列之外的每行的值。