Я работаю с индексом всех снимков, которые друг отправил за последний месяц.Он находится в рамке df
, а соответствующие атрибуты - to
и time
.Я хотел бы выделить экземпляры, которые "к" любому из 12 наиболее часто встречающихся имен в to
.У меня есть фрейм данных summary
с каждым уникальным значением to
и их частотами.summary
определяется как:
> summary <- arrange(count(df, to), desc(n))
Я пытался использовать filter () для сравнения значений от df$to
до head(summary$to, 12)
> top12 <- filter(df, to == head(summary$to, 12))
, что дало мне ошибку
Warning message:
In to == head(summary$to, 12) :
longer object length is not a multiple of shorter object length
и очень странный кадр данных для top12
, который имеет, казалось бы, случайный выбор экземпляров из каждого to
с меньшим количеством строк, чем есть экземпляры каждого из верхних 5 to
значений.Я могу использовать вектор с именами, введенными вручную, и получать именно то, что должен, но мне нужно масштабируемое решение, чтобы я мог легко расширять или сокращать включенный диапазон и легко обновлять при добавлении данных из будущих месяцев.Поскольку вектор работал, я попытался преобразовать head(summary$to, 12)
в вектор, но получил ту же ошибку.
> top12 <- filter(df, to == c("name 1","name 2", ... "name 12"))
> top12 <- filter(df, to == as.vector(head(summary$to, 12)))
Warning message:
In to == as.vector(head(summary$to, 12)) :
longer object length is not a multiple of shorter object length
Что я делаю не так?Есть ли еще лаконичные способы сделать то же самое?