2016-02-05 56 views
0

在数据帧中的某些元素的意思是,我有一个看起来像这样的数据帧:总和或R中

k v 2002 2006 2010 
1 a x 79.1 80.2 83.2 
2 a y 75.1 76.2 79.3 
3 a z 74.7 75.8 79.0 
4 b x 82.8 85.9 87.6 
5 b y 81.1 83.5 85.1 
6 b z 80.5 83.1 84.6 

等。我需要的是数字值的平均值的每一行,即我要它看起来像这样:

k v tot 
1 a x 80.833 
2 a y 76.867 
3 a z 76.500 
4 b x 85.433 
5 b y 83.233 
6 b z 82.733 

我不想保留原始值,只是手段。我知道rowMeans,但据我所知我不能(也不想)使用它,因为它是对整行进行平均,而不仅仅是最后三列。我试图用

rowMeans(subset(df,select=3:5)) 

但当时我只得到的数值和适度宽松的变量kv。有没有人知道一种方便的方法来取代连续的一些元素的意思?

+3

'df $ tot < - rowMeans(df [,3:5])'应该这样做 – Jaap

+2

是的。或者'cbind(df [,1:2],tot = rowMeans(df [,3:5]))'以获得我想要的信息。 (df [,3:5],1,function(x)mean(x)) – Pekka

+1

'df $ tot < - df [, - c(3:5)]'count = – count

回答

1
dplyr::mutate(df, tot= (`2002`+`2006`+`2010`)/3) 

也应该工作。

这将保留你想要的前两列变量,并追加一个名为tot的列,即=三个'年'列的平均值。

+0

谢谢,是的。 – Scott

+0

感谢@RichardScriven,你打败了我。 – Scott

+0

当然,np。额外反引号是一种痛苦:) –