R语言 tidyverse系列学习笔记(系列5)dplyr 数据分析之across

news2024/11/24 20:41:04

成绩单 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)

在这里插入图片描述

在之前的系列3中,介绍了成绩单的计算,链接: https://blog.csdn.net/qq_43792777/article/details/131049634?spm=1001.2014.3001.5502

本系列继续以成绩单为例,对系列3进行改进。
之前介绍了rowwise+summary组合来处理NA,但是当数据量特别大时,会出现bug

新的函数,rowSums

score1 = score |> 
          mutate(rowSums(select(score,musci_score,english_score,match_score),na.rm = TRUE))
          
view(score1)

在这里插入图片描述
select有个缺点就是当需要计算的数据列过多时,需要一一列举很麻烦,用contains会很简单

计算每个学生各科分数之和

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

view(score_sum)

在这里插入图片描述

新的问题来了,我的数据命名没有规律该怎么办呢?
可以根据数据类型来计算

查看数据类型的方式:typeof

typeof(score$ID)
typeof(score$english_score)

在这里插入图片描述

across应用范围比select+contains更广泛

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

view(score_sum1)

double属于numeric,可以用 where(is.numeric) 也可以用 where(is.double)

考试题目太难了,给学生提升一下成绩的 task,给每科都除以0.95

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

view(score_curve)

在这里插入图片描述

原成绩 >= 85分 为 pass, otherwise 则为 fail

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

view(score_pass)

在这里插入图片描述

.cols 还可以是 everything()

score_pass_everything = score |> 
  mutate(across(.cols = everything(),  .fns = ~if_else(.x>=85,"pass","fail"), .names = "pass_{col}"))

view(score_pass_everything)

看一下结果,ID 列 和 gender 列 也输出为 pass or fail
在这里插入图片描述
当然,本例子中将 ID 列 和 gender 列 强制转换成 numeric 是不恰当的,只需要了解该方法即可

修改后的成绩 >= 85分 为 pass, otherwise 则为 fail

score_curve_pass = score |> 
  mutate(across(.cols = where(is.numeric), 
                .fns = c(curve = ~.x/0.95, pass = ~if_else(.>=85,"pass","fail")), 
                .names = "{fn}_{col}"))

view(score_curve_pass)

在这里插入图片描述

summarise+across

计算均值、方差、5%、95%

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),
                     q95 = ~quantile(.x, 0.95, na.rm = TRUE)
                   ),
                   .names = "{fn}:{col}"
                   ))
view(score_summary)

在这里插入图片描述

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

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

相关文章

MySQL(八):排序与分页

排序与分页 前言一、排序数据1、排序规则2、单列排序3、多列排序 二、分页1、背景2、实现规则3、拓展 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快&…

从零开始Vue项目中使用MapboxGL开发三维地图教程(三)添加全屏,缩放旋转和比例控制面板以及自定义图标、标记点击弹窗、地图平移等功能

文章目录 1、添加各种控制面板1.1、添加全屏1.2、缩放旋转控制1.3、比例尺 2、获取并显示鼠标移动位置的经纬度坐标3、添加图标3.1、添加图片图层的图标3.2、添加带有标记的自定义图标3.3、悬停时显示弹出窗口 1、添加各种控制面板 1.1、添加全屏 //添加全屏控制this.map.addC…

管理类联考——逻辑——知识篇——第一章 性质命题

第一章 性质命题(最基础,最难*****) 一、性质命题定义(必考) 判断事物具有或不具有某种性质的命题。 二、性质命题的四种基本形式 全称肯定:①所有的A都是B 全称否定:②所有的A不是B 特称肯…

Nature子刊:光遗传在绒猴执行检测任务中的行为效应

狨猴体型小,具有巨大的基因修饰潜力,并可表现复杂的行为,已经成为神经科学领域的一个关键模型。 德国恩斯特斯特朗格曼神经科学研究所与马克斯普朗克学会的研究人员设计了一种轻质的、3D打印的植入物,利用高密度硅基微电极阵列&am…

Monorepo vs. Microrepo: 选择适合你的代码仓库策略

简介 在软件开发领域,选择合适的代码仓库策略对于优化协作、可扩展性和代码质量至关重要。Monorepo和Microrepo是两种流行的方法,它们提供了各自的优势和考虑因素。本文将探讨这两种策略的特点,解释为何不同的公司选择不同的选项,…

基于Hexo和Butterfly创建个人技术博客,(5) 使用Hexo的Tags Plugin插件增强博客文章内容和视觉表现力

Hexo官司网查看 这里 注意: Tags语法是Hexo插件提供的,是非标准语言,写文章时要注意以下几点: 用于在文章中快速插入特定的内容,作用等同于其它语言,可理解为一种增强版本的markdown;可混合Mark…

Linux系统编程学习 NO.7 ——sudo配置、编译器的使用

引言: 现在是北京时间2023年6月14日8点16分,期末考试在即,重心可能得转移到考试上了。不过想到马上就可以回家陪家人过端午节,还是非常开心的。放暑假了就可以好好陪家人了。尝试一下换个环境复习吧,洗漱一下就去图书…

智见|比亚迪廉玉波:2023年销量目标300万辆

营收4240亿元,同比增长96%;归属上市公司股东净利润166亿元,同比增长445.86%;累计销售186.85万辆,同比增长152.5%……这是2022年比亚迪的成绩单。 据比亚迪披露,仅2022年一年新能源汽车的销量,就…

【重要】MThings V0.5.0更新要点

再见了BUG,为了改善质量,我们已修正了一些问题,以便您能继续富有成效且令人敬畏。 下载地址: http://gulink.cn/download 01. [新增]支持数据网关功能。 数据网关功能提供协议转换和数据汇聚功能,可实现不同的通道类型…

1--Gradle入门 - 简介、安装、目录结构、创建项目

1--Gradle入门 - 简介、安装、目录结构、创建项目 Gradle 官网 Gradle官网地址:Gradle Build Tool Gradle官方下载安装教程页面:https://gradle.org/install/ Gradle官方用户手册:https://docs.gradle.org/current/userguide/userguide.html …

4--Gradle入门 - 创建普通的web工程

4--Gradle入门 - 创建普通的web工程 前言 上一篇,我们已经创建了java工程,本篇章再来创建web工程。 “ 其实没啥用,还是研究如何部署 Springboot 环境就好了 ” 创建普通的web工程 1. 新建 gradle 管理的工程项目 1685862847224 2. 设置项目使…

前端构建工具的未来

本文作者系360奇舞团前端开发工程师 本文为翻译 原文标题:The Future Of Frontend Build Tools 原文作者:Alexander Joseph 原文链接:https://www.smashingmagazine.com/2022/06/future-frontend-build-tools/ 前端构建工具对现代前端开发者的…

基于SpringCloud+Vue房产销售平台的设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

数据库从业者在行业的变革下------越来越难

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

有趣的数学 依靠想象力的微积分

1、无限分割计算圆的面积 考虑将圆切成若干等份,下图为4等份。 下图为8等份。 下图为16等份。 下图为最终想象出来的极限矩形,据此分割为无穷等份的圆拼接为一个矩形。 矩形的面积 r * C / 2。 r为半径,C为周长。 2、夹逼法计算圆周率 借助…

使用SwinTransformer进行图片分类

SwinTransformer 是微软亚洲研究院在2021年提出的适用于CV领域的一种基于Tranformer的backbone结构。 它是 Shift Window Transformer 的缩写,主要创新点如下。 1,分Window进行Transformer计算,将自注意力计算量从输入尺寸的平方量级降低为线…

力扣刷题记录(一)剑指Offer(第二版)

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应用,有接触SLAM、Linux、ROS、C/C++、DJI OSDK等; 3、参加工作后…

【JVM系列】jvm内存结构详解

文章目录 前言HotSpot VM介绍内存结构程序计数器JVM栈本地方法栈Java堆方法区运行时常量池 永久代和元空间永久代(PermGen)元空间(Metaspace) 直接内存总结 前言 我们为什么要学习JVM? 面试的需要中高级程序员的必备技…

java的字符流

字符流的底层也是字节流。字符流字节流字符集。 特点是输入流一次读一个字节,遇到中文时,一次读多个字节(读多少个与字符集有关);输出流底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中。 字…

AI绘图高级篇 第7篇 MJ以图换图-卡通头像

大家好,我是菜鸟哥 这个是我们MJ系列的第7篇,以前在会员群里发过,就是把头像做成卡通或者3D的效果还是很酷,或者是迪斯尼风格的。其实非常简单,就是用了一个MJ的以图换图的功能,今天给大家详细的说一下。 前…