2014-06-14 122 views
0

我有一个数据帧,其中有15,000行,用于12天的观察。在这个框架中的一列有每天价值的总和 - 但是这个数字对于1,000行(每天有很多观察)是相同的。我需要用12个总数制作一个矢量图并剪掉额外的东西。R - for循环创建数据帧中的值向量

我这样做是成功的,而没有for循环:

day1 <- (dat[which(dat$Day == 1), ])[1, 6] # get 1st "Daily.Sum" val of ea. "dat$Day" lev. 
day2 <- (dat[which(dat$Day == 2), ])[1, 6] # as "Daily.Sum" is 6th column 
day3 <- (dat[which(dat$Day == 3), ])[1, 6] 
## ...etc. to "day12" 

当我用这个循环,而不是:

daysums <- as.numeric() 
for (i in 1:12) { 
     if (dat$Day == i) { 
      daysums <- append(daysums, dat[which(dat$Day == i), ][1, 6]) 
     } 
} 

我希望得到这样的:

daysums 
[1] 979426 1240724 1371640 ...etc. #ea. value = 1st obj. in vector "Daily.Sums" for a 
            # given day index in vector "dat$Day" 

但我得到12个警告:

12: In if (dat$Day == i) { ... : 
the condition has length > 1 and only the first element will be used 

很明显我的循环逻辑在这里有缺陷。任何帮助赞赏。

回答

0

您可以使用拆分功能

split(Dat,Dat$day) 
0

尝试:with(dat,{tapply(Daily.Sum,Day,mean)})