r语言 - filter() 一个数据框,根据一个值是否在另一个帧上一列的前 12 行中



我正在使用一个朋友在上个月发送的所有Snapchat的索引。它位于帧df中,相关属性totime。我想隔离"到"to中 12 个最常见名称中的任何一个的实例。我有一个数据框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

我做错了什么?还有什么更简洁的方法来做同样的事情吗?

尝试:

top12 <- filter(df, to %in% summary$to[1:12])

最新更新