मैं मार्च के महीने में दिन-प्रतिदिन कोविड मामलों के रोलिंग औसत की गणना करने का प्रयास कर रहा हूं।

उदाहरण के लिए 5 मार्च को इसे मार्च के पहले 5 दिनों के मामलों का माध्य लेना चाहिए, 20 तारीख को पहले 20 दिनों का माध्य लेना चाहिए।

मैंने इसके लिए कोड का एक छोटा सा अंश लिखा है लेकिन क्या कोई पूर्वनिर्मित कार्य है या ऐसा करने का एक बेहतर तरीका है ?

df:

Country.Region Date       Cases_count
   <chr>          <date>           <dbl>
 1 France         2021-03-01        4730
 2 France         2021-03-02       22872
 3 France         2021-03-03       26903
 4 France         2021-03-04       25286
 5 France         2021-03-05       23507
 6 France         2021-03-06       23306
 7 France         2021-03-07       21835
 8 France         2021-03-08        5534
 9 France         2021-03-09       23143
10 France         2021-03-10       29674

कोड:

max_date <- ymd(max(df$Date))
march <- seq(ymd("2021-03-01"), ymd(max_date), by = "day")

rolling_data <- lapply(march, function(x){
  
  rolling_avg <- df %>% 
    filter( 
           Country.Region == "France", 
           Date %in% c(ymd("2021-03-01"): x)) %>%
      summarise(rolling_mean = mean(Cases_count)) #%>% 
    
      # from: https://stackoverflow.com/questions/61038643/loop-through-irregular-list-of-numbers-to-append-rows-to-summary-table
  data.frame(Date = x, rolling_march = rolling_avg)
})

do.call(rbind,rolling_data)

आउटपुट:

      Date rolling_mean
1  2021-03-01      4730.00
2  2021-03-02     13801.00
3  2021-03-03     18168.33
4  2021-03-04     19947.75
5  2021-03-05     20659.60
6  2021-03-06     21100.67
7  2021-03-07     21205.57
8  2021-03-08     19246.62
9  2021-03-09     19679.56
10 2021-03-10     20679.00

समस्या: मामलों की संख्या के साथ इसका उपयोग करने के लिए मुझे कुछ जुड़ना होगा। तो अगर कुछ प्रीबिल्ट फ़ंक्शन है तो मैं शायद इसे म्यूटेट या सारांश के साथ उपयोग कर सकता हूं।

r
0
ViSa 24 मार्च 2021, 22:46
सुझाव: अपना df उत्पन्न करने के लिए कोड प्रदान करें। यह मदद करता है कि आपने नामों और मूल्यों को चिपकाया, लेकिन उन्हें एक संपादक में चिपकाने और फिर उसमें से एक बयान देने के लिए कुछ प्रयास करना पड़ता है। यदि आपका कोड सामान्य शैली दिशानिर्देशों के अनुसार ठीक से प्रारूपित है, तो यह भी मदद करेगा, जैसा कि style.tidyverse.org में है। .
 – 
eduardokapp
24 मार्च 2021, 22:59
ज़रूर, ध्यान में रखेंगे !!
 – 
ViSa
24 मार्च 2021, 23:08

1 उत्तर

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

तो आप वास्तव में एक संचयी औसत चाहते हैं, न कि रोलिंग/मूविंग औसत।

एक आसान तरीका है cumsum का उपयोग करना। उदाहरण के लिए, यदि आपके पास N तत्वों के साथ एक वेक्टर x है, तो संचयी माध्य इस प्रकार व्यक्त किया जा सकता है:

cummulative_mean <- cumsum(x) / seq_len(length(x))

वास्तविक रोलिंग माध्य के लिए, zoo pkg हमें zoo::rollmean प्रदान करता है।

1
eduardokapp 24 मार्च 2021, 22:55
धन्यवाद @eduardokapp, यह वास्तव में एक संचयी औसत है। यह शर्मनाक है कि मैं यह सवाल पूछने के लिए कितना मूर्ख था।
 – 
ViSa
24 मार्च 2021, 23:07
अब यह मूर्खतापूर्ण लग सकता है कि आपने इसे समझ लिया है! उम्मीद है, आपके प्रश्न से और लोगों को भी इसका पता लगाने में मदद मिलेगी।
 – 
eduardokapp
24 मार्च 2021, 23:09