데이터를 처음 서브 세트 한 후에 집계해야하는 백만 개의 레코드가있는 데이터 세트가 있습니다. 이 경우 표본 크기가 다소 커서 좋은 재현성 샘플을 제공하기가 어렵지만 어쨌든 시도 할 것입니다.dplyr의 하위 집합으로 집계
이 같은 외모와 협력하고있는 데이터의 무작위 표본 : 동일, 먼저 우리가 달에 의해 부분 집합 및 주파수 테이블을 만들어야합니다 매월에서
> df
auto_id user_id month
164537 7124 240249 10
151635 7358 226423 9
117288 7376 172463 9
177119 6085 199194 11
128904 7110 141608 9
157194 7143 241964 9
71303 6090 141646 7
72480 6808 175910 7
108705 6602 213098 8
97889 7379 185516 8
184906 6405 212580 12
37242 6057 197905 8
157284 6548 162928 9
17910 6885 194180 10
70660 7162 161827 7
8593 7375 207061 8
28712 6311 176373 10
144194 7324 142715 9
73106 7196 176153 7
67065 7392 171039 7
77954 7116 161489 7
59842 7107 162637 7
101819 5994 182973 9
183546 6427 142029 12
102881 6477 188129 8
, 거기에 많은 사용자 사용자와 (이 사용자 당 하나 명의 여행이지만, 더 큰 데이터 세트에서,이 하지의 경우 위의 무작위 표본에서, 불행하게도) 촬영 여행의 양 :
full_data <- full_data[full_data$month == 7,]
users <- as.data.frame(table(full_data$user_id))
head(users)
Var1 Freq
1 100231 10
2 100744 17
3 111281 1
4 111814 2
5 113716 3
6 117493 3
우리가 할 수있는 전체 데이터 세트에서 월별로보기 7 월 7 일 (월 = 7), 사용자는 여러 번 여행했습니다. 이제 중요한 부분 - topten
- -이다
tenPercent = round(nrow(users)/10)
users <- users[order(-users$Freq),]
topten <- head(users, n = tenPercent)
지금 새로운 dataframe이 (Freq
의 측면에서 상위 10 %)이 사용자의 상위 10 %가 하위 집합으로 요약 할 수 있으며, 우리는 양을 얻을 사용자
> output
month trips
1 7 12147
2 8 ...
3 9 ...
4 10 ...
5 11 ...
6 12 ...
과 같아야 결국
sum(topten$Freq)
[1] 12147
의 상위 10 %의 촬영 여행를 사용하여이 프로세스를 자동화 할 수있는 방법이 있나요- 특히 상위 10 %의 하위 집합을 의미합니까? 시도했습니다
output <- full_data %>%
+ group_by(month) %>%
+ summarise(n = n())
그러나 이것은 월별 총 이동 수만 합계합니다. 누군가가 dplyr
의 쿼리에이 부분을 통합하는 방법을 제안 할 수 있습니까? :
tenPercent = round(nrow(users)/10)
users <- users[order(-users$Freq),]
topten <- head(users, n = tenPercent)
시도해 주셔서 감사합니다. 대답은 약간 벗어났습니다 (약 1000 번 또는 예상보다 적음),'filter (percent_rank (n)> = 0.9)는 어떻게 작동합니까? –