باستخدام R للحصول على تقلبات الذروة avg.نسبة حركة المرور على الإنترنت من بيانات
-
15-11-2019 - |
سؤال
لدي شبكة حركة مرور البيانات التالية عن كل ساعة من عشرة أيام على النحو التالي في ص dataset.
Day Hour Volume Category
0 00 100 P2P
0 00 50 email
0 00 200 gaming
0 00 200 video
0 00 150 web
0 00 120 P2P
0 00 180 web
0 00 80 email
....
0 01 150 P2P
0 01 200 P2P
0 01 50 Web
...
...
10 23 100 web
10 23 200 email
10 23 300 gaming
10 23 300 gaming
كما رأينا هناك تكرار الفئة في غضون ساعة واحدة أيضا.أحتاج إلى حساب تقلبات في ساعة الذروة إلى متوسط ساعة نسب هذه الفئات الطلب.
تقلب:الانحراف المعياري للساعة مجلدات مقسمة حسب كل ساعة في المتوسط.
ساعة الذروة avg.ساعة نسبة:نسبة حجم الحد الأقصى من ساعة إلى المجلد.متوسط ساعة لهذا التطبيق.
كيف يمكنني تجميع وحساب هذه الإحصائيات اثنين لكل فئة ؟ أنا جديدة على R و لا يملكون الكثير من المعرفة في كيفية تجميع و الحصول على المتوسطات كما ذكر.
إذن النتيجة النهائية سوف ننظر بشيء من هذا القبيل حيث الأولى حجم كل فئة مجمعة على واحد 24 ساعة من خلال تلخيص المجلد ثم احتساب الإحصائيات اثنين
Category Volatility Peak to Avg. Ratio
Web 0.55 1.5
P2P 0.30 2.1
email 0.6 1.7
gaming 0.4 2.9
تحرير:plyr حصلت لي قدر هذا.
stats = ddply(
.data = my_data
, .variables = .( Hour , Category)
, .fun = function(x){
to_return = data.frame(
volatility = sd((x$Volume)/mean(x$Volume))
, pa_ratio = max(x$Volume)/mean(x$Volume)
)
return( to_return )
}
)
ولكن هذا ليس ما كنت آمل.أريد الإحصاءات في الفئة حيث كل ساعة من أيام يتم تجميعها لأول مرة في 24 ساعة عن طريق جمع كميات ثم تقلب السلطة الفلسطينية نسبة محسوبة.أي اقتراحات للتحسين ؟
المحلول
كنت بحاجة إلى أن تفعل ذلك في مرحلتين (باستخدام plyr
حزمة):أولا كما أشرت يمكن أن يكون هناك اليوم عدة ساعات المجموعات لنفس الفئة ، لذلك علينا أولا الكلي لكل فئة ، المجاميع داخل كل ساعة ، بغض النظر عن اليوم:
df1 <- ddply( df, .(Hour, Category), summarise, Volume = sum(Volume))
ثم يمكنك الحصول على احصائيات الخاص بك:
> ddply(df1, .(Category), summarise,
+ Volatility = sd(Volume)/mean(Volume),
+ PeakToAvg = max(Volume)/mean(Volume) )
Category Volatility PeakToAvg
1 P2P 0.3225399 1.228070
2 Web NA 1.000000
3 email 0.2999847 1.212121
4 gaming 0.7071068 1.500000
5 video NA 1.000000
6 web 0.7564398 1.534884