R语言6种将字符转成数字的方法,写在新年来临之际

news2025/1/3 14:18:05

咱们临床研究中,拿到数据后首先要对数据进行清洗,把数据变成咱们想要的格式,才能进行下一步分析,其中数据中的字符转成数字是个重要的内容,因为字符中常含有特殊符号,不利于分析,转成数字后才能更好进行分析。
今天来总结一下常见的几种字符转数字的方法,建议收藏,以后需要用时找得到。咱们先生成一个数据,来示例一下。

library(tidyr)

# 创建原始宽格式的数据框
data <- data.frame(
  id = c(1:8),
  group = c(0, 0, 0, 0, 1, 1, 1, 1),
  w0 = c(0.35, 0.77, 0.48, 0.63, 0.45, 0.56, 1.08, 0.55),
  w1 = c(1.01, 1.32, 1.18, 1.42, 0.59, 0.86, 1.44, 1.20),
  w2 = c(1.47, 1.60, 1.65, 1.88, 0.64, 1.37, 1.93, 1.68),
  w4 = c(2.46, 2.54, 2.86, 3.13, 0.99, 2.04, 2.63, 2.87)
)

# 将数据框从宽格式转换为长格式
df_long <- data %>%
  pivot_longer(
    cols = c('w0', 'w1', 'w2', 'w4'), # 需要转换的列名
    names_to = "time",                # 新生成的列名,用来存储原列名
    values_to = "value"               # 新生成的列名,用来存储原数值
  )

在这里插入图片描述
好的,数据生成了,我们看到到time这一列的变量是w0,w1,w2,w4的字符变量,咱们想要把它转成数字0,1,2,4,应该怎么转换呢?最常见的时候是想起ifelse()函数来一个个的转换,但是这样效率太低了,介绍几种快速转换的。

  1. dplyr包
library(dplyr)
df_long2 <- df_long %>%
  mutate(time = case_when(
    time == "w0" ~ 0,
    time == "w1" ~ 1,
    time == "w2" ~ 2,
    time == "w4" ~ 4,
    TRUE ~ as.numeric(time) # 这一行确保如果未来有其他值,它们不会变成NA
  ))

在这里插入图片描述
这样就轻松转换好了。

  1. 也是继续使用dplyr包recode()函数,咱们注意一下,这两个函数的判断方法有点不一样。等号前面不能有空格。
library(dplyr)
df_long3 <- df_long %>%
  mutate(time = recode(time, w0 =0, w1 =1, w2 =2, w4 =4))

在这里插入图片描述
3. 使用基础R中的 factor() 和 as.numeric(),这个的好处是不用在额外使用R包,但是你必须一个个的指定。也要对基础语法比较掌握。

df_long3$time2 <- as.numeric(as.character(factor(df_long$time, 
                                               levels = c("w0", "w1", "w2", "w4"),
                                               labels = c(0, 1, 2, 4))))

在这里插入图片描述

  1. stringr包来对数字提取,因为咱们是字符后面的数字部分,所以可以用这样的方法,并不适合所有情况。
library(stringr)
df_long4 <- df_long %>%
  mutate(time = as.numeric(str_extract(time, "\\d+")))

在这里插入图片描述

  1. 使用dplyr包的if_else函数,注意一下这个和基础的ifelse()函数是不一样的
df_long5<- df_long %>%
  mutate(time = if_else(time == "w0", 0,
                        if_else(time == "w1", 1,
                                if_else(time == "w2", 2,
                                        if_else(time == "w4", 4, NA_real_)))))

在这里插入图片描述
6. 因为它是位置索引,所以索引回来的是位置,因此有个小缺点,4变成了3,不能完全满意。为什么我还要说呢,使用 match() 函数,这个函数主要是用来索引字符匹配的。明白它的用法在很多地方都能有很大的用途。

df_long6 <- df_long %>%
  mutate(time = match(time, c("w0", "w1", "w2", "w4")) - 1) # 因为索引从1开始,所以减去1

在这里插入图片描述

写在新年来临之际,公众号4年来有无数的铁粉默默支持,给我提了很多好的意见,受益良多,在此默默感谢。
新的一年公众号会将对纵向分析进行一些介绍,包括混合效应模型、gee模型、gamm模型等。也会继续复现一些关于charls的纵向分析文章。
感谢大家对我的scitable包的支持,有些粉丝还不明白它能做什么,最基础的功能就是:基线表、单因素和多因素分析,多模型分析,阈值效应分析,亚组分析,rcs分析。还可以进行数据挖掘和交互效应深层次数据挖掘。
目前还有很多功能待写,比如一键相加交互模型函数、gamm模型函数、gam模型的阈值函数、gee模型的曲线拟合和阈值函数,新版的亚组森林图,相信不会让你们失望的。

最后祝各位粉丝新年快乐,合家美满,连发连中。

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

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

相关文章

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

&#x1f389;【小程序上线第三天&#xff01;突破25用户大关&#xff01;】&#x1f389; 嘿&#xff0c;大家好&#xff01;今天是我们小程序上线的第三天&#xff0c;我们的用户量已经突破了25个&#xff01;昨天还是16个&#xff0c;今天一觉醒来竟然有25个&#xff01;这涨…

Ps:将数据组作为文件导出

Ps菜单&#xff1a;文件/导出/数据组作为文件 Export/Data Sets as Files “将数据组作为文件导出” Export Data Sets as Files命令是 Photoshop 数据驱动设计功能的一部分&#xff0c;用于结合可变数据和模板&#xff0c;生成多个文件。 1、自动化批量生成 适用于名片、证书、…

Java基本操作笔记

命令行快速进入指定文件夹 快速切换进入指定文件 文件夹快速切换 idea开发步骤 快捷键 修改模块 选中模块右键依次选择 选择第三个修改模块和文件夹的名称 输入修改后的名字回车 导入模块 找到要导入的模块&#xff0c;ctrc复制该文件夹 打开idea找到工程文件夹ctrv粘贴 点击o…

OpenCV-Python实战(8)——图像变换

一、缩放 cv2.resize() img cv2.resize(src*,dsize*,fx*,fy*,interpolation*) img&#xff1a;目标图像。 src&#xff1a;原始图像。 dsize&#xff1a;&#xff08;width&#xff0c;height&#xff09;图像大小。 fx、fy&#xff1a;可选参数&#xff0c;水平/垂直方向…

Spring thymeleaf 的快速默认搭建使用

Spring thymeleaf 的快速默认搭建使用 thymeleaf 的搭建Pom 文件 thymeleaf 的使用Controller返回参数String资源文件路径访问端点显示HTML页面 thymeleaf 的搭建 Pom 文件 Pom 文件引入 spring-boot-starter-thymeleaf 依赖 <dependency><groupId>org.springfra…

Linux | 零基础Ubuntu搭建JDK

目录 软件简介 在线文档 压缩包安装 下载地址 补:传输软件 传输等待 目录结构 解压安装 配置环境 更新环境 测试JDK结果 APT安装 软件简介 Java Development Kit (JDK) 是 Sun 公司&#xff08;已被 Oracle 收购&#xff09;针对 Java 开发员的软件开发工具包。自…

揭秘 Fluss 架构组件

这是 Fluss 系列的第四篇文章了&#xff0c;我们先回顾一下前面三篇文章主要说了哪些内容。 Fluss 部署&#xff0c;带领大家部署Fluss 环境&#xff0c;体验一下 Fluss 的功能Fluss 整合数据湖的操作&#xff0c;体验Fluss 与数据湖的结合讲解了 Fluss、Kafka、Paimon 之间的…

PyQt的介绍

举例 解释 一 PyQt是什么 PyQt 是 Python 编程语言的一个库&#xff0c;它是 Qt 库的 Python 绑定。Qt 是一个跨平台的图形用户界面&#xff08;GUI&#xff09;开发框架&#xff0c;广泛应用于开发桌面应用程序。PyQt 使得 Python 开发者能够利用 Qt 框架的强大功能来创建图…

数据库高安全—openGauss安全整体架构安全认证

openGauss作为新一代自治安全数据库&#xff0c;提供了丰富的数据库基础安全能力&#xff0c;并逐步完善各类高阶安全能力。这些安全能力涵盖了访问登录认证、用户权限管理、审计与追溯及数据安全隐私保护等。本章节将围绕openGauss安全机制进行源码解读&#xff0c;以帮助数据…

计算机网络 (16)数字链路层的几个共同问题

一、封装成帧 封装成帧是数据链路层的一个基本问题。数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把接收到的帧中的数据取出并上交给网络层。封装成帧就是在一段数据的前后分别添加首部和尾部&#xff0c;构成了一个帧。接收端在收到物理层上交的比特流后…

SAP SD信贷管理信用管理手册(下)

1、项目类别的信贷激活 图1-12-1.项目类别的信贷设置路径 图1-12-2.项目类别的信贷参数激活 说明&#xff1a;项目类别是否进行信贷管理设置。 2、定义信贷组 图1-13-1.定义信贷组路径 图1-13-2.信贷组定义 说明&#xff1a;信贷组参与后续信贷控制的组合分配。 3、销售凭证及…

【linux学习指南】可重入函数与volatile

文章目录 &#x1f4dd;可重⼊函数&#x1f320; volatile&#x1f6a9;总结 &#x1f4dd;可重⼊函数 main函数调⽤insert函数向⼀个链表head中插⼊节点node1,插⼊操作分为两步,刚做完第⼀步的时候,因为硬件中断使进程切换到内核,再次回⽤⼾态之前检查到有信号待处理,于是切换…

Web安全 - “Referrer Policy“ Security 头值不安全

文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …

FFmpeg:详细安装教程与环境配置指南

FFmpeg 部署完整教程 在本篇博客中&#xff0c;我们将详细介绍如何下载并安装 FFmpeg&#xff0c;并将其添加到系统的环境变量中&#xff0c;以便在终端或命令行工具中直接调用。无论你是新手还是有一定基础的用户&#xff0c;这篇教程都能帮助你轻松完成 FFmpeg 的部署。 一、…

AcWing练习题:平均数1

读取两个浮点数 AA 和 BB 的值&#xff0c;对应于两个学生的成绩。 请你计算学生的平均分&#xff0c;其中 AA 的成绩的权重为 3.53.5&#xff0c;BB 的成绩的权重为 7.57.5。 成绩的取值范围在 00 到 1010 之间&#xff0c;且均保留一位小数。 输入格式 输入占两行&#x…

Unity学习笔记(四)如何实现角色攻击、组合攻击

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 实现动画 首先实现角色移动的动画&#xff0c;动画的实现过程在第二篇&#xff0c;这里仅展示效果 attack1 触发攻击动画 实现脚本 接下来我们通过 Animator 编辑动画之间的过渡&#…

如何使用MySQL的group_concat函数快速做关联查询?

当我们需要做一对多的关联查询时&#xff0c;会很容易想到用left join来实现。例如&#xff0c;现有country表和city表之间建立了一对多的关联关系。如果要展示各国家以及城市列表&#xff0c;会很容易想到以下SQL&#xff1a; SELECT country, city FROM country LEFT JOI…

Go快速开发框架2.6.0版本更新内容快速了解

GoFly企业版框架2.6.0版本更新内容较多&#xff0c;为了大家能够快速了解&#xff0c;本文将把更新内容列出详细讲解。本次更新一段时间以来大伙反馈的问题&#xff0c;并且升级后台安全认证机制&#xff0c;增加了RBAC权限管理及系统操作日志等提升后台数据安全性。 更新明细…

行业分析---造车新势力之零跑汽车

1 背景 在之前的博客中&#xff0c;笔者撰写了多篇行业分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 《行业分析---…

大数据与机器学习(它们有何关系?)

想了解大数据和机器学习吗&#xff1f;我们将为你解释它们是什么、彼此之间有何关联&#xff0c;以及它们为何在数据密集型应用中如此重要。 大数据和机器学习是如何相互关联的&#xff1f; 大数据指的是传统存储方法无法处理的海量数据。机器学习则是计算机系统从观察结果和…