我有一个不同的数据框,其中一列有一些记录的纬度(纬度),另一列是同一数据帧的另一列,记录的日期(datecollected)。 我想计算并在一个新的数据框中输出纬度(5度)和年(两年)相同间隔的记录数。
答案 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
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")])
。