以纬度和年数的间隔计算值

时间:2014-04-02 11:50:54

标签: r count

我有一个不同的数据框,其中一列有一些记录的纬度(纬度),另一列是同一数据帧的另一列,记录的日期(datecollected)。 我想计算并在一个新的数据框中输出纬度(5度)和年(两年)相同间隔的记录数。

1 个答案:

答案 0 :(得分: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")])

的结果