首页 > 解决方案 > “较长的对象长度不是较短对象长度的倍数”

问题描述

我有这个数据集 -

print(df)

  object    group   
1 apple      A    
1 banana     B    
1 pear       A    
1 robot      C

print(df2)

  object    group   
1 apple      A    
1 apple      B    
1 apple      A    
1 robot      C
1 robot      C
1 robot      C
1 banana     C

我想计算每个值出现在另一个数据集中的次数,它看起来完全一样,但从不同的时间段提取数据。另一个数据集称为df2

我使用了这段代码 -

x <- df %>%
  mutate(reference = length(df2[df2$object == object,]$object))

它给了我这个错误:longer object length is not a multiple of shorter object length

当我在 dplyr 之外运行它时它可以工作,就像这样 -

object <- "apple"
length(df2[df2$object == object,]$object)

我可以做这样的相对参考,包括object在过滤器中吗?

标签: rdplyr

解决方案


根据我的评论:dplyr 函数适用于作为向量的整个列。尝试

df %>%
rowwise() %>% 
mutate(reference = length(df2[df2$object == object,]$object))%>%
ungroup()

正如您所说,ungroup将需要,除非您计划进行进一步的逐行操作。


推荐阅读