2015-04-16 60 views
0

我對R很新,嘗試了很多東西,但沒有奏效。我的表看起來像這樣:做R中的特定行的計算

data temp 
11.01.15 11am 15 
11.01.15 12am 16 
11.01.15 13am 14 
12.01.15 11am 13 
12.01.15 12am 11 
12.01.15 13am 11 

,並繼續對5192行和很多天,我要計算當日的平均值,測量總是每天做3次。所以我需要一個循環來計算1-3,4-6,7-9等行的值的平均值,並跟蹤它們並保存在文件中。

回答

0

使用dplyr包及其功能。我會猜測你有一個名爲「日」或「日期」的變量和另一個你想要的日常變量的變量「x」。代碼:

group_by(data, day) %>% 
    summarize(meanX = mean(x)) 

會返回一個數據幀與x的每一天中稱爲data數據集的平均值。

+1

這將不起作用,因爲每一天的度量都是唯一的。 –

+0

如果時間戳是日變量的一部分,它將遇到問題。但'substr(day,1,8)'會照顧它。 – iacobus

1

如果你總是有三點意見,你可以計算出平均的temp超過3模塊假設你的數據稱爲df

tapply(df$temp, cumsum(seq(nrow(df)) %% 3 == 1L), mean) 
#  1  2 
# 15.00000 11.66667 

另一種方式是data轉換爲Date類的計算平均過它。下面是使用data.table

library(data.table) 
setDT(df)[, mean(temp), by = as.Date(data, "%d.%m.%y")] 
#  as.Date  V1 
# 1: 2015-01-11 15.00000 
# 2: 2015-01-12 11.66667 
0

您可以使用lapply做到這一點

req.out = do.call(rbind, 
      lapply(split(data, f = data$date), 
      function(x){ 
      out = mean(x$measurement) 
      })) 

其中,數據是您的包含數據幀的日期和列一個例子(我把它叫做如上測量),在您需要來計算平均值。