2016-08-15 49 views
0

我試圖在幾個不同的數據集中求和大於70的值。我相信匯總可以做到這一點,但是我的研究並沒有指出明顯的解決方案來獲得超過七十個數據集的值。我首先使用聚合來獲取每日最大值,並將這些值放入名爲yearmaxs的數據框中。這裏是我的代碼和我曾嘗試:使用聚合來求和大於70的值R

次數O3>一年70%的網站

Sys.setenv(TZ = "UTC") 
library(openair) 
library(lubridate) 
filedir <- "C:/Users/dfmcg/Documents/Thesisfiles/8hravg" 
myfiles <- c(list.files(path = filedir)) 
paste(filedir, myfiles, sep = '/') 
npsfiles <- c(paste(filedir, myfiles,sep = '/')) 

for (i in npsfiles[22]) { 

    x <- substr(i,45,61) 
    y <- paste('C:/Users/dfmcg/Documents/Thesisfiles/exceedenceall', x, sep='/') 
    timeozone <- import(i, date="DATES", date.format = "%Y-%m-%d %H", header=TRUE, na.strings="NA") 

    overseventy <- c() 
    yearmaxs <- aggregate(rolling.O3new ~ format(as.Date(date)), timeozone, max) 
    colnames(yearmaxs) <- c("date", "daymax") 
    overseventy <- aggregate(daymax ~ format(as.Date(date)), yearmaxs, FUN = length, 
     subset = as.numeric(daymax) > 70) 
    colnames(overseventy) <- c("date", "daymax") 
    aggregate(daymax ~ format(as.Date(date), "%Y"), overseventy, sum) 

我也有嘗試:總和>「70和總和(daymax>」 70)。

我在這一點上的另一個想法是使用for循環遍歷值。我希望a可以再次使用聚合來彙總感興趣的值。任何幫助都將不勝感激!

+0

是的,yearmas是我在整個時間序列中的每日最大值,而timeozone是整個數據集。但是,我已經解決了我的問題,現在正在導出它!但是,我已經更新了該問題以包含最終解決方案。但是,我希望不必爲了得到這個結果而進行三次聚合。 – user5727

回答

0

我想你想:

aggregate(daymax ~ format(as.Date(date)), yearmaxs, FUN = length, 
      subset = as.numeric(daymax) > 70) 

東西向:

  1. 你需要數值比較,所以使用as.numeric(daymax) > 70daymax > "70";
  2. 使用aggregate.formula中的subset參數。
+0

是的,我想要的年數不是一年中的數值。我只是自己意識到這一點。一年的長度是否會超過70? – user5727

+0

我已更新問題以顯示我現在正在獲取的內容。 – user5727