मैं अपने वर्षा डेटा को औसत करने की कोशिश कर रहा हूं, जो एक रेखापुंज ईंट के रूप में एक वस्तु है (वस्तु को "प्रेक" कहा जाता है)। "Prec" में 95 परतें होती हैं। हालांकि, विचार केवल पहली 20 परतों को औसत करने का होगा। उदाहरण के लिए, पहली परत की पहली ग्रिड सेल को दूसरी परत के पहले ग्रिड सेल के साथ औसत किया जाएगा, और फिर तीसरी परत, चौथी परत …… को २०वीं परत तक ले जाया जाएगा। यह प्रत्येक परत के लिए सभी ग्रिड कोशिकाओं (8192 कोशिकाओं प्रति परत) के लिए किया जाएगा। यह वह वस्तु है जो "Prec" दिखती है:

Prec

class       : RasterBrick 
dimensions  : 64, 128, 8192, 95  (nrow, ncol, ncell, nlayers)
resolution  : 2.8125, 2.789327  (x, y)
extent      : -181.4062, 178.5938, -89.25846, 89.25846  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : C:/Users/Rain/Documents/My documents/All netCDF files/netcdffiles/MaxPrecIPSLIPSL- 
CM5B-LRrcp85.nc 
names       : X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ... 
z-value     : 1, 95 (min, max)
varname     : onedaymax 

मैंने निम्नलिखित की कोशिश की:

ncfname <- "MaxPrecIPSLIPSL-CM5B-LRrcp85.nc"
Prec <- brick(ncfname,var="onedaymax")
sm <- mean(Prec[1:20], na.rm=TRUE) #Attempting to calculate the mean by isolating first 20 layers 
(example: Grid cell #1 of layer #1 is averaged with Grid cell #1 of layer #2....all the way to layer 
#20 

sm
[1] 20.8997

जबकि यह चलता रहता है, यह केवल एक मान देता है, जैसा कि 20 परतों से 8192 औसत मूल्यों की एक परत के विपरीत है। ऐसा क्यों हो रहा होगा?

किसी भी सहायता की काफी सराहना की जाएगी!

0
Rain1290 12 नवम्बर 2020, 00:07

1 उत्तर

सबसे बढ़िया उत्तर

R प्रश्न पूछते समय कृपया हमेशा एक न्यूनतम, स्व-निहित, प्रतिलिपि प्रस्तुत करने योग्य उदाहरण शामिल करें। यानी, उन फ़ाइलों को संदर्भित न करें जिनके साथ आप काम करते हैं, लेकिन कोड के साथ कुछ डेटा बनाएं या डेटा का उपयोग करें जो आर के साथ आता है। इस तरह:

library(raster)
b <- brick(system.file("external/rlogo.grd", package="raster"))

सभी के लिए माध्य प्राप्त करने के लिए (इस मामले में 3) परतें

m <- mean(b)

पहली दो परतों का माध्य ज्ञात करने के लिए

m <- mean(b[[1:2]])

ध्यान दें कि डबल ब्रैकेट [[ का उपयोग परतों को कम करने के लिए किया जाता है। एकल कोष्ठक [ मान निकालने के लिए हैं। इस प्रकार b[1:2] पहले दो सेल के लिए मान लौटाता है। देखें ?raster::subset

1
Robert Hijmans 12 नवम्बर 2020, 00:20