У меня есть DataFrame data
в sparkR. Он содержит user = 12 311 12 320, ...
и type = 1 2 3 4
. У нас 10000 пользователей.
Например, у одного пользователя тип = 1 2 3 4 4 4 2 4. Я хочу найти наиболее распространенное целое число для этого пользователя. В R я могу решить это так
mostcommon <- which.max(tabulate(user$type))
учитывая, что «пользователь» был data.frame, а не DataFrame. Я хочу сделать это для всех пользователей в «данных». Один из способов сделать это так
u<- c()
for(j in 1:10000) {
id <- filter(data, data$user== j)
# For the jth user I make the data local to run the
# which.max and tabulate functions
idlocal <- collect(id)
u[j] <- which.max(tabulate(idlocal$type))
}
Это работает в R/sparkR, и вы даете мне наиболее распространенный тип для всех пользователей. Но это требует времени, потому что я сделал данные локальными для запуска функций which.max и tabulate. Есть ли более умный и быстрый способ сделать это?
Кроме того, как можно найти два наиболее распространенных типа?