R语言 tidyverse系列学习笔记(系列2)表格的处理

news2024/11/18 0:39:30

创建一个得分表 score

install.packages("dplyr")
library(dplyr)

install.packages("tibble")
library(tibble)

install.packages("stringr")
library(stringr)

score = tibble(ID=c("1222-1","2001-0","3321-1","4898-0","2782-0","1002-8","4211-0","1023-1","3325-1"),
          gender=c("female","male","male","male","female","female","male","female","male") ,
          chinese_mid_score=round(runif(9,80,90),digits = 0),
          chinese_final_score=round(runif(9,80,90),digits = 0),
          english_score=c(round(runif(8,80,90),digits = 0),NA),
          match_score=round(runif(9,80,90),digits = 0),
          musci_score=round(runif(9,80,90),digits = 0)
               )

view(score)

其中

round(runif(9,80,90),digits = 0)

这段代码是在 R 语言中生成一个长度为 9 的随机数向量,向量中的每个元素都是在 80 到 90 之间的均匀分布的随机数,并使用 round 函数将这些随机数四舍五入为整数。其中,runif 函数用于生成均匀分布的随机数,digits 参数指定保留的小数位数,而 round 函数用于将随机数四舍五入为整数。因此,这段代码生成的向量中的每个元素都是 80 到 90 之间的整数。

c(round(runif(8,80,90),digits = 0),NA)

设置最后一个数据为缺失值,用 NA 表示

对 列 进行处理

contains

···当列数很多时,select 逐个输入想要的列太浪费时间,用contains筛选包含某关键词的列

score_column1 = score |> 
  select(contains("chinese")|contains("english"))

names(score_column1)

在这里插入图片描述
除了contains,还可以用 matches

matches

score_column4 = score |> 
  select(matches("mid|final"))

names(score_column4)

starts_with , ends_with

筛选以某字符串 开头starts_with 或 结尾ends_with 的列

score_column2 = score |> 
  select(starts_with("chinese"))

names(score_column2)


score_column3 = score |> 
  select(ends_with("score"))

names(score_column3)

在这里插入图片描述

对 行 进行处理

根据 ID 修改

str_detect(score$ID,"-1")

在这里插入图片描述
在这里插入图片描述

score_pattern = score |> 
  subset(str_detect(ID,"-1") == TRUE)
view(score_pattern)

在这里插入图片描述

strsplit("1222-0","-")
strsplit("1222-0","-")[[1]][1]
strsplit("1222-0","-")[[1]][2]

在这里插入图片描述

rowrise

score_subID = score |>
  mutate(SubID = strsplit(ID,"-")[[1]][1])
view(score_subID)

在这里插入图片描述
mutate之前加上rowrise可以逐行处理

score_subID = score |>
  rowwise() |> 
  mutate(SubID = strsplit(ID,"-")[[1]][1])
view(score_subID)

在这里插入图片描述

case_when

score_case_when = score |>
  rowwise() |> 
  mutate(subID1 = strsplit(ID,"-")[[1]][1]) |> 
  mutate(subID2 = strsplit(ID,"-")[[1]][2]) |> 
  mutate(grade = case_when(
    subID1>=4000 ~"forth",
    subID1>=3000 ~"third",
    subID1>=2000 ~"second",
    subID1>=1000 ~"first"
  ))


view(score_case_when)

case_when最难满足的条件放在最前边,最容易满足的条件放在最后
这样计算出来的结果才精准

对 行 求和

rowwise()很重要,不加的话会出现计算问题

score_rank = score |> 
  rowwise() |> 
  mutate(total_score=sum(chinese_mid_score,chinese_final_score,english_score,match_score,musci_score,na.rm=TRUE))
view(score_rank)

在这里插入图片描述
按性别,分数由高到低排序

score_rank = score |> 
  rowwise() |> 
  mutate(total_score=sum(chinese_mid_score,chinese_final_score,english_score,match_score,musci_score,na.rm=TRUE)) |> 
  arrange(gender,desc(total_score))
  
view(score_rank)

在这里插入图片描述
只保留男生女生的最高分,可以用distinct,也可以用slice_max

score_rank = score |> 
  rowwise() |> 
  mutate(total_score=sum(chinese_mid_score,chinese_final_score,english_score,match_score,musci_score,na.rm=TRUE)) |> 
  arrange(gender,desc(total_score)) |> 
  distinct(gender,.keep_all = TRUE)

view(score_rank)
score_rank = score |> 
  rowwise() |> 
  mutate(total_score=sum(chinese_mid_score,chinese_final_score,english_score,match_score,musci_score,na.rm=TRUE)) |> 
  group_by(gender) |> 
  slice_max(total_score, n=2)

view(score_rank)

在这里插入图片描述
n=2在这里插入图片描述
slice_max 有 n 这个参数,可以更灵活控制输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从JMeter Cookie管理器开始,轻松掌握接口测试技能!

目录 【前言】 【1. 添加Cookie管理器】 【2. 登录接口获取Cookie】 【3. Cookie关联】 【4. 动态修改Cookie值】 【结论】 【附录】 【前言】 在接口测试中,我们经常需要对Cookie进行处理和关联,来模拟用户在浏览器中的操作。特别是在登录和权限…

chatgpt赋能python:Python名字的由来

Python名字的由来 Python是一门高级编程语言,它的名字来源于一个非常有趣的故事。接下来的文章将介绍如何命名Python,并且揭示这个名字的真正含义。 Guido van Rossum设计Python Python是由Guido van Rossum设计的。在1989年,Guido在荷兰国…

用Flask-Login库和阿里云短信推送服务实现网站注册登录功能

诸神缄默不语-个人CSDN博文目录 本文介绍如何用Flask-Login库和阿里云短信推送服务实现网站注册登录功能。 大致逻辑是在注册和找回密码时调用阿里云短信服务,登录时使用手机号密码登录(别的安全功能还没有加)。 很多代码都是直接由ChatGP…

Zinx框架学习 - 连接管理

Zinx - V0.9 连接管理 每个服务器的能够处理的最大IO数量是有限的,根据当前服务器能开辟的IO数量决定,最终决定权是内存大小现在我们要为Zinx框架增加链接个数的限定,如果超过⼀定量的客户端个数,Zinx为了保证后端的及时响应&…

浏览器断点调试技巧

一、前言 日常开发中,当业务测试数据展示有问题时,我们需要快速去排查问题出现原因;但看了自己写的逻辑,很自信的觉得没问题但最终展示和逻辑对不上。这个需要我们便可以利用浏览器断点调试功能,来逐步调试对比逻辑来…

IDEA 终端命令行设置

一、说明 在使用 IDEA 进行程序开发时,需要使用到终端 Terminal 的功能,便于能够快速使用 shell 命令,进行各种相关的操作。 这些操作可以包括代码的版本控制、程序的打包部署等等 比如,前后端的集成开发环境(IDEA、We…

探究Cache缓存功能---【pytest】

前言 pytest运行完用例之后会生成一个 .pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。 1、跑自动化时经常会出现这样一个情况,一轮自动化跑完后零星出现了几个失败测试用例,无法断定失败的原因,所以可能需要重…

2023新版Spring6全新讲解-核心内容之事务管理

Spring核心之事务 一、JdbcTemplate JdbcTemplate是Spring框架对JDBC操作进行的封装,可以简化方便对数据库的操作。 1.数据库表结构 准备一张普通的表 CREATE TABLE t_student (id int NOT NULL AUTO_INCREMENT,name varchar(32) DEFAULT NULL,age int DEFAULT N…

网络安全面试题大全(整理版)+附答案

随着国家政策的扶持,网络安全行业也越来越为大众所熟知,想要进入到网络安全行业的人也越来越多。 为了拿到心仪的 Offer 之外,除了学好网络安全知识以外,还要应对好企业的面试。 作为一个安全老鸟,工作这么多年&…

Vue.js 中的过渡动画是什么?如何使用过渡动画?

Vue.js 中的过渡动画是什么?如何使用过渡动画? 在 Vue.js 中,过渡动画是一种在元素插入、更新或删除时自动应用的动画效果,可以为应用程序增加一些动态和生动的效果。本文将介绍 Vue.js 中过渡动画的概念、优势以及如何使用过渡动…

谈“污”色变!如何应对测序中常见污染

微生物群落研究正在彻底改变人类对微生物学的理解,但是微生物污染的DNA存在于各种操作中包含从取样到测序结束。其中常用的DNA提取试剂盒和其他实验室试剂中也存在污染,其严重影响从微生物量较低的样品中获得的结果。 DNA污染的可能来源包括分子生物学级…

【嵌入式环境下linux内核及驱动学习笔记-(14)linux总线、设备、驱动模型之platform】

目录 1、新驱动架构的导入1.1 传统驱动方式的痛点1.2 总线设备驱动架构 2、platform 设备驱动2.1 platform总线式驱动的架构思想2.2 platform _device相关的数据类型2.2.1 struct platform_device2.2.2 struct platform_device_id2.2.3 struct resource2.2.4 struct device 2.3…

VSCode离线安装插件

一、前言 工作环境屏蔽外网,无法在VSCode客户端在线VSCode插件商店下载插件。因此,只能下载插件文件,并离线安装。 二、下载VSCode插件 1. 在VSCode插件商店中搜索需要的插件 2. 下载vsix格式插件 三、离线安装 VSCode 插件 1. 打开菜单Vi…

docker-compose部署hive数仓服务 —— 筑梦之路

1. docker创建网络 # 创建&#xff0c;注意不能使用hadoop-network docker network create hadoop_network# 查看 docker network ls 2. mysql部署 # 拉取镜像docker pull mysql:5.7# 生成配置mkdir -p conf/ data/db/cat > conf/my.cnf <<EOF [mysqld] character…

今天面了个字节跳动拿30k出来的测试大佬,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的…

Apache 日志解析和分析工具

ApacheWeb服务器在企业中广泛用于托管其网站和Web应用程序。Apache 服务器生成的原始日志提供了有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的宝贵信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事件的记录 - 从…

【Linux】LNMP框架的架构与环境配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LNMP框架的架构与环境配置 一、安装 Nginx 服务1.关闭防火墙及安装依赖包2、创建运行用户3、编译安装4、优化路径5、添加 Nginx 系统服务 二、安装 MySQL 服务1、安装Mysql环…

图论与算法(4)图的深度优先遍历应用

1. 无向图的联通分量个数 1.1 联通分量个数 无向图的联通分量个数是指图中无法通过边连接到其他分量的顶点集合的个数。可以通过深度优先搜索或广度优先搜索来计算无向图的联通分量个数。 1.2 记录联通分量 &#xff08;1&#xff09;多个联通量的数&#xff1a; 7 6 0 1 0…

【MCS-51单片机汇编语言】期末复习总结⑥——串口通信(题型六)

文章目录 知识准备发送/接收缓冲器 SBUF串口通信控制寄存器SCON电源控制寄存器 PCON各个工作方式波特率的设定 常考题型例题1题目描述题目解析题解 例题2题目描述题解 知识准备 发送/接收缓冲器 SBUF 单片机在发送或接收数据的前先将数据存储在SBUF中&#xff1b;接收&#x…

STM32单片机蓝牙APP语音识别取暖器GSM短信超温报警

实践制作DIY- GC0141-蓝牙APP语音识别取暖器 基于STM32单片机设计---蓝牙APP语音识别取暖器 二、功能介绍&#xff1a; 电路&#xff1a;STM32F103C最小系统DS18B20温度传感器 多个按键 LCD1602显示器 1个串口语音识别模块1个5V 加热片 模拟加热蜂鸣器SIM800 GSM短信模块 HC0…