下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接:
欢迎订阅我们专栏
.......前面部分请点击上面链接看原文
Tidyverse 生态系统是由 Hadley Wickham 及其团队开发的 R 语言软件包集合,这些包共享基础设计理念、语法和整洁的数据结构,旨在简化数据科学任务。它包括一组相互关联的工具,可用于数据操作、可视化和建模等。Tidyverse 具有一致性,包遵循一致的接口,使用户更易学习和应用数据操作技术;具有简单性,去除不必要选项,专注常用功能简化数据处理任务;还能与 R 生态系统集成,与其他 R 包无缝协作增强数据分析工作流。其核心包提供了建模、转换和可视化数据的功能,如用于数据可视化的 ggplot2、用于数据操作和转换的 dplyr、用于整理数据的 tidyr、用于读取数据的 readr、用于函数式编程的 purrr、用于创建整洁数据框的 tibble、用于字符串操作的 stringr、用于处理因子的 forcats 。此外,还包含用于文本分析的 tidytext、机器学习的 tidymodels 以及金融操作的 tidyquant 等辅助包。
一、字符串的查阅
1、字符串长度的统计
字符串长度的统计在文本分析和数据清理时经常被使用。stringr
扩展包中的str_length()
函数能够轻松实现这一操作。它返回每个字符串中字符的数量。
# 加载stringr扩展包
library(stringr)
# 定义字符向量
chr.data <- c("R", "for", "clinical", "data", "science", NA)
# 统计字符串长度
str_length(chr.data)
输出结果:
[1] 1 3 8 4 7 NA
在上面代码中,str_length()
函数统计了字符向量chr.data
中每个元素的长度,并返回一个数值向量。需要注意的是,对于NA
值,str_length()
会返回NA
,而不是一个数值。
2、提取字符串的子串
在数据处理中,我们经常需要从字符串中提取部分内容。stringr
提供的str_sub()
函数能够帮助我们从字符串中提取指定范围内的子串。
# 定义字符串
mgh <- "Massachusetts General Hospital"
# 提取前六位的子串
str_sub(mgh, 1, 6)
输出结果:
[1] "Massac"
通过str_sub()
函数,我们可以指定起始和结束的位置(索引从1开始),从而提取所需的子字符串。在此示例中,提取的是字符串mgh
的前六个字符。
3、获取字符串中的单词
有时候,我们需要从字符串中提取特定位置的单词。stringr
包中的word()
函数可以实现这一需求。
# 加载stringr扩展包
library(stringr)
# 定义字符串变量
mgh <- "Massachusetts General Hospital"
# 提取字符串中的第二个单词
word(mgh, 2)
输出结果:
[1] "General"
word()
函数可以轻松提取字符串中指定位置的单词。上例中,我们提取了mgh
字符串中的第二个单词"General"
。
4、复杂应用示例
假设我们有一个包含病人姓名和诊断信息的字符向量,我们希望进行如下操作:
- 统计每个病人姓名的字符长度。
- 提取诊断信息中的关键字。
- 从诊断信息中提取病人病情的描述部分。
以下是一个应用场景及代码示例:
# 加载stringr扩展包
library(stringr)
# 定义病人数据
patients <- c("John Doe", "Alice Smith", "Robert Brown", NA)
diagnoses <- c("Diabetes Type 2, requires insulin", "Hypertension, monitor blood pressure", "Asthma, use inhaler regularly", "Cancer, chemotherapy recommended")
# 1. 统计每个病人姓名的字符长度
name_lengths <- str_length(patients)
# 2. 提取诊断信息中的关键字(例如,“Diabetes”,“Hypertension”等)
# 提取关键字的子串,从诊断信息的第一个单词开始提取到第一个逗号
diagnosis_keywords <- str_sub(diagnoses, 1, str_locate(diagnoses, ",")[,1] - 1)
# 3. 从诊断信息中提取病人病情的描述部分(例如,“requires insulin”,“monitor blood pressure”等)
# 提取诊断信息中逗号后的描述部分
diagnosis_descriptions <- str_sub(diagnoses, str_locate(diagnoses, ",")[,1] + 2)
# 输出结果
print(paste0("病人姓名的字符长度:", paste(name_lengths, collapse = ", ")))
print(paste0("诊断信息中的关键字:", paste(diagnosis_keywords, collapse = ", ")))
print(paste0("病人病情的描述部分:", paste(diagnosis_descriptions, collapse = ", ")))
输出结果:
> print(paste0("病人姓名的字符长度:", paste(name_lengths, collapse = ", ")))
[1] "病人姓名的字符长度:8, 11, 12, NA"
> print(paste0("诊断信息中的关键字:", paste(diagnosis_keywords, collapse = ", ")))
[1] "诊断信息中的关键字:Diabetes Type 2, Hypertension, Asthma, Cancer"
> print(paste0("病人病情的描述部分:", paste(diagnosis_descriptions, collapse = ", ")))
[1] "病人病情的描述部分:requires insulin, monitor blood pressure, use inhaler regularly, chemotherapy recommended"
二、 字符串大小写的转换
字符串的大小写转换在文本标准化、数据清理以及显示格式调整时非常有用。stringr
包提供了一系列函数,用于实现大小写的转换,包括将字符串转换为全大写、全小写、标题风格和句子风格。
1、字符串转换为全大写
str_to_upper()
函数用于将字符串中的所有字母转换为大写字母。
.......后面部分请看原文
欢迎订阅我们专栏,深度系统地学习R语言。
为帮助大家更出色地掌握临床统计、数据挖掘以及人工智能建模的入门知识和应用,由于众多同学在计算机编程上经验欠缺,特此开设《R 语言与数据科学的终极指南》专栏。该专栏每周至少会定期更新三篇,直到整个专栏更新完成。每篇文章都在 5000 字以上,质量平均分高达 94 分。要提醒大家的是,每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!
专栏《R 语言与数据科学的终极指南》链接:https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482