r을 사용하여 변동성과 피크를 평균적으로 얻습니다.인터넷 트래픽 데이터의 비율
-
15-11-2019 - |
문제
R 데이터 세트에서 다음과 같이 10 일간의 시간 동안 다음과 같은 네트워크 트래픽 데이터가 있습니다.
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 )
}
)
그러나 이것은 내가 바라는 것이 아닙니다. 카테고리에 대한 통계를 원합니다. 모든 시간이 볼륨을 합산 한 다음 휘발성 및 PA 비율이 계산하여 모든 시간의 시간이 24 시간으로 집계됩니다. 개선을위한 제안은 무엇입니까?
해결책
You'd need to do it in two stages (using the plyr
package): First, as you pointed out, there can be multiple Day-Hour combos for the same category, so we first aggregate, for each category, its totals within each Hour, regardless of the day:
df1 <- ddply( df, .(Hour, Category), summarise, Volume = sum(Volume))
Then you get your stats:
> 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