R中的环纬度装箱
我是使用R的新手,在创建循环时遇到了一些问题 我有一个从2017年到2019年的每小时数据的数据框,这些数据框有以度为单位的纬度和经度坐标,以及其他列。纬度是横跨两个半球的负值和正值-从-90到+90。我想创建一个循环,通过5度纬度带(例如-45到-40)将它们分开,然后在各个表中输出 我目前正在使用以下代码将原始数据帧R中的环纬度装箱,r,loops,for-loop,binning,R,Loops,For Loop,Binning,我是使用R的新手,在创建循环时遇到了一些问题 我有一个从2017年到2019年的每小时数据的数据框,这些数据框有以度为单位的纬度和经度坐标,以及其他列。纬度是横跨两个半球的负值和正值-从-90到+90。我想创建一个循环,通过5度纬度带(例如-45到-40)将它们分开,然后在各个表中输出 我目前正在使用以下代码将原始数据帧hourly.avg.bylat划分为单独的数据帧,即lat.bin.neg90_neg85,我将继续将其编写为表,但是我觉得这相当笨拙和耗时,并且更喜欢使用循环来完成 lat.
hourly.avg.bylat
划分为单独的数据帧,即lat.bin.neg90_neg85
,我将继续将其编写为表,但是我觉得这相当笨拙和耗时,并且更喜欢使用循环来完成
lat.bin.neg90_neg85<-as.data.frame(split.data.frame(hourly.avg.bylat, cut(hourly.avg.bylat$lat, c(-90, -85), include.lowest=TRUE, labels = "")))
lat.bin.neg90_neg85您可以使用列表存储输出并在循环中进行计算:
output=list()
for(i in seq(-90, 85, 5))
{
output[[paste0(i,"_",i+5)]]<-as.data.frame(split.data.frame(hourly.avg.bylat,
cut(hourly.avg.bylat$lat, c(i, i+5),
include.lowest=TRUE, labels = "")))
}
output=list()
(i在序号中(-90,85,5))
{
输出[[paste0(i,“,”i+5)]不需要循环。可以同时使用split
和cut
功能,并在一行中执行操作:split(hourly.avg.bylat,cut((hourry.avg.bylat$lat,breaks=seq(-90,90,5)))
好的,谢谢,我不知道你可以为拆分提供break
当然。事实上,即使by
也有效:by(hourry.avg.bylat,cut(hourry.avg.bylat$lat,breaks=seq(-90,90,5)),identity)
。并将标识
更改为任何函数
,以传递子集进行处理,如摘要
!