[R] Need help on dataframe

arun smartpink111 at yahoo.com
Sat Jan 5 17:43:44 CET 2013


HI,

May be this helps:
dat1<-read.table(text="
ID  V1  V2  V3  V4
1    6    5    3    2 
2    3    2    2    1  
3    6    5    3    2 
4    12  15  3    2  
5    6    8    3    2 
6    3    2    4    1  
7    6    5    3    3 
8    12  15  3    1  
9    6    5    3    3 
10    3    2    7    5  
11    6    5    8    2 
12    12  19  3    2  
13    6    5    3    2 
14    3    4    2    1  
15    6    5    6    2 
16    12  15  5    2  
17    6    5    5    2 
18    3    2    8    1  
19    6    5    3    9 
20    12  15  3    10  
21    6    5    3    2 
22    3    2    2    11  
23    6    5    3    4 
24    12  15  9    2 
",sep="",header=TRUE,stringsAsFactors=FALSE) 

dat1$newID<-rep(1:(nrow(dat1)/12),each=12) #if nrow(dat1)/12 is integer

 with(dat1,aggregate(cbind(V1,V2,V3,V4),by=list(newID),mean))
#  Group.1   V1       V2       V3       V4
#1       1 6.75 7.333333 3.750000 2.166667
#2       2 6.75 6.916667 4.333333 4.000000

#or
aggregate(.~newID,data=dat1[,-1],mean)
#  newID   V1       V2       V3       V4
#1     1 6.75 7.333333 3.750000 2.166667
#2     2 6.75 6.916667 4.333333 4.000000


A.K.



----- Original Message -----
From: Simonas Kecorius <simolas2008 at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Saturday, January 5, 2013 8:33 AM
Subject: [R] Need help on dataframe

Dear R users, I came up to a problem by taking means (or other summary
statistics) of a big dataframe.

Suppose we do have a dataframe:

ID  V1  V2  V3  V4 ........................ V71
1    6     5    3     2  ........................  3
2    3     2    2     1  ........................  1
3    6     5    3     2  ........................  3
4    12   15  3     2  ........................  100
........................................................
........................................................
288 10  20  30   30 .......................... 499

I need to find out the way, how to calculate a mean of every 12 lines to
get:

V1                              V2                V3                 V4
........................... V71
mean from 1 to 7       same as V1    same as V1
mean from 8 to 14     same as V1    same as V1
etc.

I can do it column by column using:

y.ts <- ts(y$V1, frequency=12)
aggregate(y.ts, FUN=mean)

Bu this is a hardcore... Can anyone suggest a better way to compute all the
dataframe at once and get a result as matrix?

Thank you in advance!

-- 
Simonas Kecorius
**

    [[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.





More information about the R-help mailing list