چطور نرخ رشد فروش را در R محاسبه کنیم؟

growth

تغییرات فروش در بازه‌های زمانی معمولا یکی از شاخص‌هایی است که همیشه توسط کسب و کارها دنبال می‌شود. فرمول محاسبه نرخ تغییرات فروش ساده است: 

مشخص است که اگر عدد حاصل از فرمول بالا را در ۱۰۰ ضرب کنیم، درصد تغییرات فروش را محاسبه کرده‌ایم. برای این کار می‌توانیم از دستورات lead و lag در کتابخانه dplyr استفاده کنیم.

نحوه عملکرد lead و lag

این دو تابع  عملکردی ساده دارند. lead مقدار بعدی و lag مقدار قبلی را در یک بردار پیدا می‌کند. فرض کنید برداری دارید که اعداد ۱ تا ۵ را در آن ذخیره کرده‌اید. عملکرد توابع مورد نظر بصورت زیر خواهد بود:

				
					library(dplyr)
v <- 1:5
lead(v)
				
			
				
					[1]  2  3  4  5 NA
				
			

ملاحظه می‌کنید که پاسخ، یک بردار است که از مقدار ۲ آغاز شده و به NA ختم شده است. مقدار آخر به این دلیل NA شده است که پس از عدد ۵ در بردار v مقدار دیگری نداریم. حتما می‌توانید حدس بزنید که به همان دلیل پیشین اگر تابع lag را روی بردار v  اعمال کنیم اولین مقدار آن NA خواهد بود.

				
					> lag(v)
[1] NA  1  2  3  4
				
			

پاسخ توابع lead و lag همیشه به اندازه بردار اصلی هستند. برای اینکه بهتر نحوه کارکرد این دو تابع را درک کنید به مثال زیر توجه کنید.

				
					library(dplyr)
v = 1:5
data.frame(
    before = lag(v),
    actual = v,
    after = lead(v)
      )
				
			
				
					.  before actual after
1     NA   1     2
2      1   2     3
3      2   3     4
4      3   4     5
5      4   5    NA
				
			

محاسبه نرخ تغییر فروش ماهانه

فرض کنید میزان فروش ماهانه یک شرکت در ۶ ماه اول سال بصورت زیر است.

				
					data <- data.frame(
  monthID = 1:6,
  month = month.abb[1:6],
  sales = c(90e3,12.7e4,10e4,92e3,16e4,16.9e4)
    )
data
				
			
				
					.  monthID month  sales
1       1   Jan  90000
2       2   Feb 127000
3       3   Mar 100000
4       4   Apr  92000
5       5   May 160000
6       6   Jun 169000
				
			

برای محاسبه درصد میزان رشد (یا کاهش) فروش ماهانه کافی است ستونی جدید درست کنیم که حاصل تفریق ماه جاری از فروش ماه قبل، تقسیم بر میزان فروش ماه قبل باشد.

				
					library(dplyr)
data %>%
  mutate(
    sales_change_percent = ((sales - lag(sales)) / lag(sales) * 100)
    )

				
			
				
					.  monthID month  sales sales_change_percent
1       1   Jan  90000                   NA
2       2   Feb 127000             41.11111
3       3   Mar 100000            -21.25984
4       4   Apr  92000             -8.00000
5       5   May 160000             73.91304
6       6   Jun 169000              5.62500
				
			

می‌توانید با استفاده از تابع round مقدار درصد محاسبه شده را به عدد صحیح رند کنید.

				
					data %>%
  mutate(
    sales_change_percent = round(((sales - lag(sales)) / lag(sales) * 100))
    )
				
			
				
					.  monthID month  sales sales_change_percent
1       1   Jan  90000                   NA
2       2   Feb 127000                   41
3       3   Mar 100000                  -21
4       4   Apr  92000                   -8
5       5   May 160000                   74
6       6   Jun 169000                    6
				
			

 

 

 

 

Photo by Isaac Smith on Unsplash

دیدگاه‌ها

2 پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors