Skip to content
Prev 314690 / 398502 Next

Need help on dataframe

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!