数据分析:筛选多组交集特征

news/2024/10/21 9:13:31/

介绍

有时候需要在多个组间筛选它们的交集特征,本文利用R语言实现该目的

加载R包

library(UpSetR)
library(tidyverse)

Upset画图

movies <- read.csv(system.file("extdata", "movies.csv", package = "UpSetR"), header = T, sep = ";")
movies_list <- list(Action = movies %>%dplyr::filter(Action == 1) %>%dplyr::pull(Name),Adventure = movies %>%dplyr::filter(Adventure == 1) %>%dplyr::pull(Name),Children = movies %>%dplyr::filter(Children == 1) %>%dplyr::pull(Name),Comedy = movies %>%dplyr::filter(Comedy == 1) %>%dplyr::pull(Name),Crime = movies %>%dplyr::filter(Crime == 1) %>%dplyr::pull(Name),Documentary = movies %>%dplyr::filter(Documentary == 1) %>%dplyr::pull(Name)  
)movies_pl <- UpSetR::upset(data = fromList(movies_list),nsets = 3, sets = c("Action", "Adventure", "Children", "Comedy", "Crime", "Documentary"),order.by = "freq",main.bar.color = "gray10",sets.bar.color = "gray",matrix.color = "gray10",mainbar.y.label = "NO. of movies",sets.x.label = "NO. of movies")movies_pl

在这里插入图片描述

判断交集特征

  • 去冗余变量 df_uniq_movie

  • 分组变量标签 df_group_movie


df_uniq_movie <- data.frame(feature = unique(unlist(movies_list)))
df_group_movie <- lapply(movies_list, function(x){data.frame(feature = x)
}) %>% dplyr::bind_rows(.id = "Sequence")
  • 给变量打上交集标签
df_int_movie <- lapply(df_uniq_movie$feature, function(x){intersection <- df_group_movie %>% dplyr::filter(feature == x) %>% dplyr::arrange(Sequence) %>% dplyr::pull(Sequence) %>% paste0(collapse = "|")# build the dataframereturn(data.frame(feature = x, int = intersection))
}) %>% dplyr::bind_rows()head(df_int_movie)

在这里插入图片描述


http://www.ppmy.cn/news/1435715.html

相关文章

吴恩达2022机器学习专项课程(一) 6.2 逻辑回归第三周课后实验:Lab2逻辑回归

问题预览/关键词 如何创建逻辑回归算法&#xff1f;什么是Sigmoid函数&#xff1f;如何表示Sigmoid函数&#xff1f;Sigmoid函数的输出结果意味着什么&#xff1f;如何使用Numpy库计算指数&#xff1f; 笔记 1.创建逻辑回归算法 使用Sigmoid函数。 2.Sigmoid函数 也叫做逻…

代码随想录算法训练营DAY36|C++贪心算法Part.5|435.无重叠区间、763.划分字母区间、56. 合并区间

文章目录 435.无重叠区间按右边界排序CPP代码 按左边界排序如何判断相邻区间是否重叠如何判断一下一个区间与当前相邻区间是否重叠总结CPP代码 763.划分字母区间思路伪代码实现CPP代码 56. 合并区间思路CPP代码 435.无重叠区间 力扣题目链接 文章链接&#xff1a;435.无重叠区间…

2024 年 Rust 开发者路线图

Rust 近年来因其对性能、安全性和并发性的关注而广受欢迎。作为一名开发人员&#xff0c;掌握 Rust 可以为各种机会打开大门&#xff0c;包括 Web 开发。 在 github 上发现了这个优秀的路线图&#xff0c;由 Anshul Goyal 创建&#xff0c;它提供了一条全面的路径&#xff0c;概…

arm64-v8a和armeabi-v7a分别是什么?它们之间有什么区别

2024年4月22日&#xff0c;周一上午 arm64-v8a 和 armeabi-v7a 都是针对不同的 ARM 处理器架构的编译版本&#xff0c;它们之间的主要区别在于处理器架构和指令集。 arm64-v8a&#xff1a; arm64-v8a 是针对 ARMv8 架构的 64 位处理器的编译版本。ARMv8 架构引入了 64 位指令集…

C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

本篇博客介绍C Qt QMainWindow实现无边框窗口&#xff0c;适用于win10/win11系统。 QMainWindow相对于QWidget多了dockedwidget功能&#xff0c;跟多人可能更喜欢用QMainWindow做主窗口&#xff0c;如果不需要dockedwidget功能&#xff0c;QMainWindow与QWidget做主窗口基本无…

数据仓库与数据挖掘(实验一2024.4.24)

实验准备&#xff1a; 1.下载conda 2.配置环境C:\ProgramData\miniconda3\Scripts 3.创建文件夹panda进入虚拟环境qq 激活虚拟环境&#xff1a;activate qq 启动jupyter lab&#xff08;python语言环境编译&#xff09;&#xff1a;jupyter lab 4.panda下载 &#xff08;…

面试——数据库中的锁升级(Lock Escalation)机制

假设执行下面的sql语句 update tb_user set age age 1;以MySQL为例&#xff0c;按照两阶段锁协议&#xff0c;会先给tb_user加上表意向锁&#xff0c;然后对tb_user的所有行加上行锁&#xff0c;但是当tb_user数据量非常多的时候&#xff0c;频繁的获取行锁会影响性能&#…

excel 按照姓名日期年月分组求和

excel 需要按照 姓名 日期的年份进行金额求和统计&#xff0c;采用sumifs 进行统计 注意&#xff1a;sumifs 不支持 合并列拆分计算&#xff0c;合并列只会计算一个值 表格数据大概如下&#xff1a;(sheet) ABC姓名日期金额A2023/01/01500A2023/01/151500B2023/01/01200B202…