当前位置: 首页 > 知识库问答 >
问题:

Group_by并找到组之间的相交tidyverse

许丁雷
2023-03-14

我正在尝试使用< code>tidyverse对< code>group_by定义的组进行< code>group_by并找到它们之间的< code>intersect。

示例数据:

< code > data = TiB ble(feature = paste 0(" Group _ ",sample(1:800,1000,replace = T)),classifier = paste0("Classifier_ ",sample(1:3,1000,replace = T)))

数据看起来像这样:

  # A tibble: 1,000 x 2
   feature   classifier  
   <chr>     <chr>       
 1 Group_629 Classifier_2
 2 Group_549 Classifier_1
 3 Group_565 Classifier_1
 4 Group_584 Classifier_2
 5 Group_181 Classifier_2
 6 Group_359 Classifier_3
 7 Group_135 Classifier_1
 8 Group_676 Classifier_3
 9 Group_731 Classifier_1
10 Group_694 Classifier_2
# … with 990 more rows

我正在尝试< code > group _ by(classifier)并找到所有组之间的< code>intersect()。

代码:

data = tibble(feature = paste0("Group_", sample(1:800, 1000, replace = T)),
              classifier = paste0("Classifier_", sample(1:3, 1000, replace = T))) %>% group_by(classifier) %>%
              mutate(intersect = intersect(feature))

产生此错误:

Error: Problem with `mutate()` input `intersect`.
x argument "y" is missing, with no default
ℹ Input `intersect` is `intersect(feature)`.
ℹ The error occurred in group 1: classifier = "Classifier_1".
Run `rlang::last_error()` to see where the error occurred.

因为我没有提供2个参数相交

有没有人对此有解决方案?非常感谢。

共有1个答案

章博耘
2023-03-14

group_by用于数据帧上的分组计算。要获得组共有的特性的列表,您可以按分类拆分数据并使用semi_join

library(dplyr)

set.seed(123)

data <- tibble(feature = paste0("Group_", sample(1:800, 1000, replace = T)),
              classifier = paste0("Classifier_", sample(1:3, 1000, replace = T)))

data_split <- data %>% 
  split(.$classifier)

data_split$Classifier_1 %>% 
  semi_join(data_split$Classifier_2, by = "feature") %>% 
  semi_join(data_split$Classifier_3, by = "feature") %>% 
  pull(feature)
#>  [1] "Group_374" "Group_141" "Group_409" "Group_291" "Group_648" "Group_696"
#>  [7] "Group_55"  "Group_447" "Group_422" "Group_292" "Group_39"  "Group_358"
#> [13] "Group_177" "Group_373" "Group_464" "Group_348" "Group_468" "Group_8"  
#> [19] "Group_463" "Group_712" "Group_48"  "Group_665" "Group_229" "Group_209"
#> [25] "Group_271" "Group_229" "Group_8"   "Group_55"  "Group_55"  "Group_709"
#> [31] "Group_665" "Group_217" "Group_278" "Group_280" "Group_355" "Group_348"
#> [37] "Group_703" "Group_39"
 类似资料:
  • 问题内容: 我想实现 .NET的时间段库中 提供的类似功能,但要实现SQL中的类似功能。 首先,我有一个表,其中有几行带有开始日期和结束日期, 我想像这样将它们合并在一起: 组合 然后,根据该结果和另一个来自不同表的结果,我想 找出它们两者之间的交集,像这样,但是只有2个输入 (找到两个中都存在的周期): 路口 一旦我有了交叉路口,便只是在上面总结时间。 在这里,我通过示例提供了一个SQL Fid

  • 问题内容: 我有两个系列,并以大熊猫为单位,想计算相交点,即该系列的所有值都相同的地方。 我将如何使用该功能执行此操作?我一直在试图解决它,但一直未能(我不想计算上的索引交集和,但对值)。 问题答案: 将两个系列放置在Python的set容器中,然后使用set相交方法: 然后根据需要转换回列表。 刚注意到标签中的熊猫。可以转换为: 从注释中,我将其更改为更Python化的表达式,该表达式更短且更易

  • 我有一个问题,在java中找到两个数组之间的区别,我的例子就像假设我们有两个数组。数组和数组。我想有两个结果第一个结果是一个数组,它从数组“A”中找到丢失的对象,第二个结果是一个数组,它在数组“B”中找到添加的对象。第一个结果应类似于,第二个结果类似于。 感谢您的评论。

  • 问题内容: 我有一个数据框df: 我想找到的Pearson相关系数的值,并为每 因此结果应如下所示: 更新: 必须确保变量的所有列均为或 问题答案: 输出: 具有OP输出格式。 输出:

  • 考虑定义如下的 FooBar1 和 类型: 我的尝试/研究: 它们是双向相互分配的!(手动检查并使用检查 - 请参阅此处) 不过,它们彼此并不完全相同!(与检查 - 见这里) VSCode 的智能感知不会崩溃

  • 问题内容: 因此,如果我有两套: 有没有一种方法可以比较它们,只返回一组4和5? 问题答案: 试试这个 设置#removeAll 从此集合中删除所有包含在指定集合中的元素(可选操作)。如果指定的集合也是一个集合,则此操作会有效地修改此集合,以使其值为两个集合的非对称集合差异。