2014-04-02 17 views
0

我有不同的數據框,其中有一些記錄的緯度(緯度),另一列是同一數據幀的記錄日期(日期收集)。 我想計算並在新的數據框中輸出相同緯度(5度)和年(兩年)間隔的記錄數。緯度和年度間隔的值的計數

回答

0

(提示:您可以通過提供一些樣本數據更容易爲我們解答。)

dataset <- data.frame(datecollected= 
    sample(as.Date("2000-01-01")+(0:3650),1000,replace=TRUE), 
latitude=90*runif(1000)) 

我們圓了datecollected到下一個偶數年:

year.index <- (as.POSIXlt(dataset$datecollected)$year %/% 2)*2+1900 

同樣,我們將latitude四捨五入到5度的最接近倍數:

latitude.index <- (floor(dataset$latitude) %/% 5)*5 

然後,我們只是建立在圓潤年,緯度table

table(year.index,latitude.index) 

      latitude.index 
year.index 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 
     2000 12 9 15 7 11 10 11 14 9 13 11 10 8 11 13 25 10 18 
     2002 11 9 11 16 11 15 12 5 12 13 7 15 8 7 11 7 10 13 
     2004 8 12 9 10 12 16 12 13 9 7 16 11 6 13 4 15 12 10 
     2006 14 8 13 10 12 9 12 9 6 11 11 9 13 9 10 5 5 12 
     2008 8 12 17 12 12 8 12 8 14 12 11 11 10 10 14 16 17 13 

編輯:在評論有點討論後,我會後我當前的腳本。這似乎是,當你將數據讀入R.這是我做什麼,我到達那裏可能是一個問題:

rm(list=ls()) 
dataset <- read.csv("GADUS.csv",header=TRUE,sep=",") 
year.index <- (as.POSIXlt(as.character(dataset$datecollected),format="%Y-%m-%d")$year 
    %/% 2)*2+1900 
latitude.index <- (floor(dataset$latitude) %/% 5)*5 
table(year.index,latitude.index) 

      latitude.index 
year.index  0  5 20 35 40 45 50 55 60 65 70 75 
     1752  0  0  0  0  0 20  0  0  0  0  0  0 
     1754  0  0  0  0  0 27  0  3  0  0  0  0 
     1756  0  0  0  0  0 21  0  1  0  0  0  0 
     1758  0  0  0  0  0 46  0  2  0  0  0  0 
... 

這是否給你同樣的結果?如果沒有,請編輯您的問題併發布str(dataset[,c("datecollected","latitude")])的結果。

+0

好,它似乎工作,但我不明白爲什麼日期始於2000年,並在2008年結束,即使我的記錄開始於1800年,並在2000年代結束。換句話說,爲什麼只有5年? – Marco

+0

那麼,*我*的數據在2000年到2010年之間,因爲我剛剛創建了玩具數據。如果我在1800到2000年之間創建玩具數據,一切看起來都不錯。將這種方法應用於自己的數據時,您遇到問題嗎? –

+0

是的,在我的情況下範圍也是2000-2008甚至在實際區間要大得多。也許我應該改成1800年的日期起點? 如果你想檢查,在這裏你可以找到數據框。非常感謝你。 https://dl.dropboxusercontent.com/u/41172284/GADUS.csv – Marco