Emma Emma - 26 days ago 12
R Question

Averaging column data in R for a range of values

My dataset (testdata) is arranged like this:

Time 1 2 3
1 0 569.607 557.689 527.353
2 1 569.208 556.697 527.162
3 2 569.278 556.919 528.125
4 3 570.059 555.621 527.158


I need to find and tabulate averages for columns 1, 2 and 3 during specific ranges of time. For example, I need averages of column 1 where time is 20-30, then for 40-50, then for 60-70.

In order to find the average for 20:30, I have used:

sapply(testdata[testdata$Time %in% c(20:30), ],mean)


which results in

Time 1 2 3
25.5000 570.5897 557.3413 528.5433


This is ok for one time range, but I'd like to calculate several at once - is there a way to do this? Thanks!

Answer

If df is your dataframe, you can try the following:

ranges <- list(20:30, 40:50, 60:70)
t(sapply(ranges, function(x) sapply(df[df$Time %in% x,], mean)))
Comments