Dplyr का उपयोग करके प्रति समूह ऑफसेट की गणना कैसे करें


आप dplyr पैकेज का उपयोग करके R में समूह-स्थानांतरित मानों की गणना करने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

 df %>%
  group_by(var1) %>%
  mutate(lag1_value = lag(var2, n= 1 , order_by=var1))

नोट : mutate() फ़ंक्शन डेटा फ़्रेम में एक नया वैरिएबल जोड़ता है जिसमें विलंबित मान शामिल होते हैं।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस वाक्यविन्यास का उपयोग कैसे करें।

उदाहरण: dplyr का उपयोग करके समूह द्वारा स्थानांतरित मानों की गणना करें

मान लीजिए कि हमारे पास आर में निम्नलिखित डेटा फ्रेम है जो अलग-अलग दिनों में दो अलग-अलग दुकानों द्वारा की गई बिक्री को दर्शाता है:

 #create data frame
df <- data. frame (store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'),
                 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view data frame
df

  blind sales
1 to 7
2 B 12
3 to 10
4 B 9
5 to 9
6 B 11
7 to 18
8 B 23

हम एक नया कॉलम बनाने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं जो प्रत्येक स्टोर के लिए विलंबित बिक्री मूल्यों को प्रदर्शित करता है:

 library (dplyr)

#calculate lagged sales by group
df %>%
  group_by(store) %>%
  mutate(lag1_sales = lag(sales, n= 1 , order_by=store))

# A tibble: 8 x 3
# Groups: store[2]
  store sales lag1_sales
1 to 7 NA
2 B 12 NA
3 to 10 7
4 B 9 12
5 to 9 10
6 B 11 9
7 to 18 9
8 B 23 11

यहां परिणाम की व्याख्या करने का तरीका बताया गया है:

  • लैग1_सेल्स का पहला मान NA है क्योंकि स्टोर ए की बिक्री के लिए कोई पिछला मान नहीं है।
  • लैग1_सेल्स का दूसरा मान NA है क्योंकि स्टोर बी की बिक्री के लिए कोई पिछला मान नहीं है।
  • लैग1_सेल्स का तीसरा मान 7 है क्योंकि यह स्टोर ए का पिछला बिक्री मूल्य है।
  • लैग1_सेल्स का चौथा मान 12 है क्योंकि यह स्टोर बी का पिछला बिक्री मूल्य है।

और इसी तरह।

ध्यान दें कि आप लैग() फ़ंक्शन में n का मान बदलकर उपयोग किए गए लैग की संख्या भी बदल सकते हैं।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य गणनाएँ कैसे करें:

Dplyr का उपयोग करके चालू राशि की गणना कैसे करें
आर में समूह द्वारा योग की गणना कैसे करें
आर में प्रति समूह माध्य की गणना कैसे करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *