R语言 tidyverse系列学习笔记(系列3)具体任务的处理(成绩单为例)

news2024/10/5 20:19: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)

在这里插入图片描述

rowSums

注意 S 是大写的

计算每个学生的总分

score_sum = score |> 
  mutate(total_score = rowSums(select(score, contains("_score")), na.rm = TRUE))
view(score_sum)

rowSumsselect 以及 contains结合,可以灵活处理较复杂数据

在这里插入图片描述

如果数据量特别大且列名的命名没有规律该怎么办呢?

contain这种情况下不好用了,用across

score_across = score |> 
  mutate(total_score = rowSums(across(where(is.numeric)),na.rm=TRUE))

view(score_across)

任务:这次考试总体难度偏难,为了鼓励学生,给每门分数都除以0.95

score_change = score |> 
  mutate(across(.cols=where(is.numeric), .fns = ~.x/0.95, .names = "curve_{col}"))

view(score_change)

注意across函数里命名规则,前边都需要加 dot .
其中.fnsfunctions函数后边有个~,表示自定义的 function,
.names命名时记得加"",{col}表示每列的名字
在这里插入图片描述

设置 成绩>=80 为 pass,低于80为 fail

score_pass = score |> 
  mutate(across(.cols=where(is.numeric), .fns = ~if_else(.x>80,"pass","fail"), .names = "pass_{col}"))

view(score_pass)

通过在.fns中加入条件判断即可
在这里插入图片描述

最后一个综合任务

只考虑数学成绩,先将每个学生的成绩除以0.95,再判断修改后的成绩是否>85分,且新的列用curve_col及pass_col命名

score_match = score |> 
  mutate(across(.cols = match_score, 
                .fns =  ~ .x/0.95 , 
                .names = "curve_{col}"
                )
         ) |> 
  mutate(pass_match_score = if_else(curve_match_score>=85,"pass","fail")) |> 
  select(contains("match"))

view(score_match)

在这里插入图片描述
以上代码看着些许累赘,我们只考虑原来的成绩决定 pass or fail 就会简单许多

score_match = score |> 
  mutate(across(.cols = match_score, 
                .fns =  c(curve = ~ .x/0.95 , pass = ~if_else(.>=85,"pass","fail")), 
                .names = "{fn}_{col}"
  )
  ) |> 
  select(contains("match"))

view(score_match)

其中,.fns = c(curve = , pass = )表示两个function的名字
.names=“{fn}_{col}”,{fn}表示.fns里新加的两个名字
在这里插入图片描述

计算各科平均分、方差、百分数:5%,80%

score_summary = score |> 
  summarise(across(.cols = where(is.numeric), 
                   .fns = c(
                     mean = ~mean(.x , na.rm = TRUE),
                     var = ~var(.x , na.rm = TRUE),
                     q5 = ~quantile(.x , 0.05, na.rm = TRUE),
                     q80 = ~quantile(.x , 0.8, na.rm = TRUE)
                   ), 
                   .names = "{fn}_{col}"))
view(score_summary)

平均值 mean、方差 var、第 5 百分位数 q5 和第 80 百分位数 q80。
在这里插入图片描述

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

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

相关文章

PS 套索选区工具(1) 套索工具基础使用

套索工具和之前的几个一样 也是用来做选区的 我们先打开ps 那么 我这边已经打开了一个视图 我们在屏幕左侧这个地方找到 套索工具 右键它 这边有三个操作工具 上一文中 我们学的矩形选框工具 在图形上是有不小的限制 有点只能画方 有点只能画圆 我们右键 套索工具 这个工…

CMU 15-445 Project Project #1 - Buffer Pool(Task #1 - Extendible Hash Table)

Task #1 - Extendible Hash Table 一、题目链接二、准备工作三、部分实现四、自定义测试用例 一、题目链接 二、准备工作 见 CMU 15-445 Project #0 - C Primer 中的准备工作。 三、部分实现 Find auto Find(const K &key, V &value) -> bool override {std::sco…

【是C++,不是C艹】 类与对象 | 默认成员函数 | 构造函数 | 析构函数

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《是C,不是C艹》👈 前言: 在完成类与对象的认识后,我们接着学习类与对象的第二部分:默认成员函数&…

基于深度学习的高精度野外烟雾检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度野外烟雾检测识别系统可用于日常生活中检测与定位野外烟雾目标,利用深度学习算法可实现图片、视频、摄像头等方式的野外烟雾目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测…

FastReport Business Graphics .NET crack

FastReport Business Graphics .NET crack FastReport Business Graphics.NET允许您可视化层次结构信息并创建业务图以进行进一步分析。FastCube.NET允许您连接到任何应用程序。包括树图、太阳爆发图和冰柱图。 FastReport Business Graphics库允许您可视化分层数据&#xff0c…

虚幻ue镜头试拍录制器用法 5.2录制角色的的操作并按特定键播放探索

在窗口-开启镜头试拍录制器 image.png 添加源为Player image.png 这个时候录制的圆形按钮警告已经消失, 切换游戏模式为模拟 image.png 运行后点击手柄切换 进行实际的控制 image.png 点击录制之后,在cinema 的take文件夹找到文件 把文件拖动到关卡,然后 创建蓝图按L键 然后创建…

(CVPR-2023)通过有效的时空特征融合进行多模态步态识别

通过有效的时空特征融合进行多模态步态识别 paper题目:Multi-modal Gait Recognition via Effective Spatial-Temporal Feature Fusion paper是北航发表在CVPR 2023的工作 paper地址 Abstract 步态识别是一种生物识别技术,通过步行模式识别人。基于剪影…

指针 --- 进阶

先看目录,看你知道多少 目录 1.字符指针 2.指针数组 3.数组指针 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 什么是指针,我们在之前的《指针》章节已经接触过了,我们知道了指针的概念: 1…

软件测试——功能测试,使用Java,IDEA,Selenium进行web自动化测试

视频地址:03-web元素定位ID_哔哩哔哩_bilibili p1.下载jdk,maven,idea p2.配置java-selenium环境正式开始: (1)创建代码: (2)第一次运行会报错:要下载东西 (3&…

如何设计一个过压保护电路

有时候在电源输入处我们希望当电源的输入电压超过允许的最大值后电源与后级电路就自动断开,防止输入电压过高而损坏后级电路。 具有这种功能的电路叫做过压保护电路,英文简称叫OVP。 现在大家看到的就是一个典型的过压保护电压电路,主要包含…

(一)springboot实战——为什么是springboot?

前言 为什么是springboot?江湖夜雨,传说依旧,不懂springboot一技之长,如何混迹java圈,本节内容我们介绍一下spring的一些基本特性。尤其是springboot3的基本特性,使得我们更好的理解springboot3。 正文 …

【vue3】07-vue组件之间的通信-父子互传-事件总线

文章目录 Vue的组件嵌套Vue组件化-组件间通信父子组件之间通信非父子组件间的通信 Vue的组件嵌套 前面我们是将所有的逻辑放到一个App.vue中: 在之前的案例中,我们只是创建了一个组件App;如果我们一个应用程序将所有的逻辑都放在一个组件中,那么这个组…

linux下一次复制cp多个文件(含scp命令)

linux cp 参数说明 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -f:覆盖已经存在的目…

实训笔记6.5

实训笔记 6.5一、座右铭二、上周回顾Java基本语法1、Java的安装和环境变量的配置2、Java的标识符、关键字和保留字3、Java中的变量和常量、字面量4、数据类型5、运算符6、流程控制7、数组8、JVM内存图9、面向对象的两大概念-类和对象 三、类的组成3.1 属性的声明和使用3.1.1 属…

扩散模型之DDPM

扩散模型之DDPM 文章前置生成模型总结 Design of DDPM正向加噪过程反向去噪过程 文章前置 最原文链接(英文):What are Diffusion Models? 原文链接:Diffusion扩散模型大白话讲解,看完还不懂?不可能 原文链…

第10章 对象和类

第10章 对象和类 10.1 过程性编程和面相对象编程10.2 抽象和类10.2.1 类型是什么10.2.2 C中的类10.2.3 实现类成员函数10.2.4 使用类 10.1 过程性编程和面相对象编程 采用OOP方法时,首先从用户的角度考虑对象——描述对象所需的数据以及描述用户与数据交互所需的操…

【蓝桥刷题】备战国赛——异或三角

蓝桥杯2021国赛真题——异或三角 🚀 每日一题,冲刺国赛 🚀 题目导航: 异或三角 🎇思路:数位 d p dp dp d f s dfs dfs 思维 🔱思路分析: ✅数理基础: 按位异或&am…

(2017,AdaIN)用自适应实例归一化进行实时的任意风格迁移

Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 公众号:EDPJ 目录 ​​​​​​​0. 摘要 1. 简介 2. 相关工作 3. 背景 3.1 批量归一化(Batch Normalization,BN) 3.2 实例归一化&#xff…

入驻京东直播间、成功借壳上市,交个朋友和时间“交朋友”

交个朋友一直走在“交朋友”的路上。 5月31日晚,交个朋友正式入驻京东直播间,首播销售额超1.5亿元,直播热度榜达人榜第一名,累计访问人次超1700万。据了解,京东618期间,除了日常直播外,交个朋友…

java并发编程:可见性、原子性、有序性三大特性详解

文章目录 可见性导致可见性的原因线程交叉执行重排序结合线程交叉执行共享变量更新后没有及时更新 如何解决可见性问题 原子性出现原子性问题的原因如何解决原子性问题 有序性导致有序性的原因如何解决有序性问题 总结 可见性 内存可见性,指的是线程之间的可见性&am…