“较长的物体长度不是较短的物体长度的倍数”

Cau*_*der 3 r dplyr

我有这个数据集 -

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
Run Code Online (Sandbox Code Playgroud)

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

我使用了这段代码 -

x <- df %>%
  mutate(reference = length(df2[df2$object == object,]$object))
Run Code Online (Sandbox Code Playgroud)

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

当我在 dplyr 之外运行它时,它会起作用,如下所示 -

object <- "apple"
length(df2[df2$object == object,]$object)
Run Code Online (Sandbox Code Playgroud)

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

Roh*_*hit 6

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

df %>%
rowwise() %>% 
mutate(reference = length(df2[df2$object == object,]$object))%>%
ungroup()
Run Code Online (Sandbox Code Playgroud)

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