Pergunta

How to use R to calculate row mean ?

Sample data:

enter image description here

f<- data.frame(
  name=c("apple","orange","banana"),
  day1sales=c(2,5,4),
  day1sales=c(2,8,6),
  day1sales=c(2,15,24),
  day1sales=c(22,51,13),
  day1sales=c(5,8,7)
)

Expected Results :

enter image description here

Subsequently the table will add more column for example the expected results is only until AverageSales day1sales.4. After running more data, it will add on to day1sales.6 and so on. So how can I count the average for all the rows?

Foi útil?

Solução

with rowMeans

> rowMeans(f[-1])
## [1]  6.6 17.4 10.8

You can also add another column to of means to the data set

> f$AvgSales <- rowMeans(f[-1])
> f
##     name day1sales day1sales.1 day1sales.2 day1sales.3 day1sales.4 AvgSales
## 1  apple         2           2           2          22           5      6.6
## 2 orange         5           8          15          51           8     17.4
## 3 banana         4           6          24          13           7     10.8

Outras dicas

rowMeans is the simplest way. Also the function apply will apply a function along the rows or columns of a data frame. In this case you want to apply the mean function to the rows:

f$AverageSales <- apply(f[, 2:length(f)], 1, mean)

(changed 6 to length(f) since you say you may add more columns).

will add an AverageSales column to the dataframe f with the value that you want

> f

##    name day1sales day1sales.1 day1sales.2 day1sales.3 day1sales.4 means
##1  apple         2           2           2          22           5   6.6
##2 orange         5           8          15          51           8  17.4
##3 banana         4           6          24          13           7  10.8
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top