当前位置: 首页 > news >正文

去重、top_n()、pull()、格式化

1. unique():去重

从向量中去重
# 向量
vec <- c("apple", "banana", "apple", "orange", "banana")
unique_vec <- unique(vec)
print(unique_vec)
# 输出:[1] "apple"  "banana" "orange"

2. top_n():提取前 n 行

top_n()dplyr 包中的一个函数,用于按某个列的值排序并提取前 n 行。

library(dplyr)# 数据框
df <- data.frame(fruit = c("apple", "banana", "orange", "grape", "mango"),quantity = c(10, 20, 30, 40, 50)
)# 提取 quantity 列值最大的前 3 行
top_3 <- df %>% top_n(3, wt = quantity)
print(top_3)
# 输出:
#    fruit quantity
# 1  mango       50
# 2  grape       40
# 3 orange       30

3. pull():提取某一列的值为向量

pull()dplyr 包中的一个函数,用于从数据框中提取某一列的值为向量。

library(dplyr)# 数据框
df <- data.frame(fruit = c("apple", "banana", "orange", "grape", "mango"),quantity = c(10, 20, 30, 40, 50)
)# 提取 fruit 列的值为向量
fruit_vec <- df %>% pull(fruit)
print(fruit_vec)
# 输出:[1] "apple"  "banana" "orange" "grape"  "mango"

4. paste()paste0():字符串连接

paste()

paste() 用于将多个字符串连接成一个字符串,可以指定分隔符。

# 连接字符串,使用空格作为分隔符
str1 <- "Hello"
str2 <- "World"
result <- paste(str1, str2)
print(result)
# 输出:[1] "Hello World"# 连接字符串,使用自定义分隔符
result <- paste(str1, str2, sep = "-")
print(result)
# 输出:[1] "Hello-World"
paste0()

paste0()paste() 的一个特例,相当于 paste(..., sep = ""),即不使用分隔符。

# 连接字符串,不使用分隔符
result <- paste0(str1, str2)
print(result)
# 输出:[1] "HelloWorld"

5. 相关函数

格式化字符串是指将变量或数据插入到字符串中,以生成更复杂的文本输出。格式化字符串通常用于构建动态文本,例如在日志消息、用户界面中显示信息或生成报告时。在 R 中,有几种方式可以实现字符串格式化,包括 paste()paste0()sprintf()stringr 包中的 str_glue() 等。以下是对这些格式化函数的详细解释和示例。

1. paste()paste0()

paste()

paste() 是 R 中的基本字符串连接函数,可以将多个字符串连接成一个字符串,并可以指定分隔符。

# 使用空格作为分隔符
str1 <- "Hello"
str2 <- "World"
result <- paste(str1, str2)
print(result)
# 输出:[1] "Hello World"# 使用自定义分隔符
result <- paste(str1, str2, sep = "-")
print(result)
# 输出:[1] "Hello-World"
paste0()

paste0()paste() 的一个特例,相当于 paste(..., sep = ""),即不使用分隔符。

# 不使用分隔符
result <- paste0(str1, str2)
print(result)
# 输出:[1] "HelloWorld"

2. sprintf()

sprintf() 是 R 的内置函数,用于格式化字符串。它类似于 C 语言中的 sprintf 函数,支持多种格式化选项。

# 格式化字符串
name <- "World"
age <- 25
result <- sprintf("Hello, %s! You are %d years old.", name, age)
print(result)
# 输出:[1] "Hello, World! You are 25 years old."
  • %s:用于字符串。
  • %d:用于整数。
  • %f:用于浮点数。
  • %.2f:用于浮点数,保留两位小数。

3. stringr 包中的 str_glue()str_c()

str_glue()

str_glue()stringr 包中的一个函数,用于格式化字符串,类似于 Python 的 f-string。

library(stringr)# 格式化字符串
name <- "World"
age <- 25
result <- str_glue("Hello, {name}! You are {age} years old.")
print(result)
# 输出:[1] "Hello, World! You are 25 years old."
str_c()

str_c()stringr 包中的一个函数,用于连接字符串,功能类似于 paste()

library(stringr)# 连接字符串
str1 <- "Hello"
str2 <- "World"
result <- str_c(str1, str2, sep = "-")
print(result)
# 输出:[1] "Hello-World"

4. 格式化字符串的用途

格式化字符串在以下场景中非常有用:

  1. 日志消息:动态生成日志消息。

    log_message <- sprintf("Error occurred at %s: %s", Sys.time(), "File not found")
    print(log_message)
    # 输出:[1] "Error occurred at 2023-10-01 12:34:56: File not found"
    
  2. 用户界面:在用户界面中显示动态信息。

    user_name <- "Alice"
    greeting <- sprintf("Welcome, %s!", user_name)
    print(greeting)
    # 输出:[1] "Welcome, Alice!"
    
  3. 报告生成:生成包含动态数据的报告。

    report <- sprintf("The total sales for %s is $%.2f.", "October", 12345.67)
    print(report)
    # 输出:[1] "The total sales for October is $12345.67."
    

总结

  • paste()paste0():基本的字符串连接函数,paste() 可以指定分隔符,paste0() 不使用分隔符。
  • sprintf():格式化字符串,支持多种格式化选项。
  • str_glue():格式化字符串,类似于 Python 的 f-string。
  • str_c():连接字符串,功能类似于 paste()

格式化字符串是处理文本数据时非常重要的工具,可以帮助你生成动态和可读性强的文本输出。希望这些解释能帮助你更好地理解和使用这些函数!如果你有任何问题或需要进一步的帮助,请随时提问。

总结

  • unique():从向量、数据框、列表中提取唯一值。
  • top_n():按某个列的值排序并提取前 n 行。
  • pull():从数据框中提取某一列的值为向量。
  • paste()paste0():连接字符串,paste() 可以指定分隔符,paste0() 不使用分隔符。
  • str_c()str_glue()stringr 包中的字符串连接和格式化函数。
  • sprintf():R 的内置字符串格式化函数。

希望这些解释能帮助你更好地理解和掌握这些函数!如果你有任何问题或需要进一步的帮助,请随时提问。

http://www.dtcms.com/a/307952.html

相关文章:

  • LCM中间件入门(1):工作原理核心概念及Ubuntu环境下的C++实践
  • 如何在NPM上发布自己的React组件(包)
  • 基于岗位需求的康养休闲旅游服务实训室建设方案
  • 达梦(DM8)常用管理SQL命令(3)
  • JavaScript内存管理完全指南:从入门到精通(通俗版+硬核版)
  • python后端之DRF框架(下篇)
  • Linux 服务器性能优化:性能监控,系统性能调优,进程优先级,内核升级全解析
  • 常见的中间件漏洞(tomcat,weblogic,jboss,apache)
  • 制造业企业如何保障文件外发图纸数据安全的?
  • dubbo源码之消费端启动的高性能优化方案
  • CTE公用表表达式的可读性与性能优化
  • Java项目:基于SSM框架实现的小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告+任务书+远程部署】
  • 解决Git升级后出现的问题
  • DeepSeek SEO关键词优化提升流量增长
  • Linux Shell 条件判断:`test`、`[`、`[[` 命令深度解析
  • centos yum更换阿里源
  • 处理vscode在Ubuntu18.04上用不到的方法
  • 【大模型理论篇】跨语言AdaCOT
  • 关于PHP学习
  • 飞算科技:以自主创新引领数字科技浪潮,飞算JavaAI赋能产业智能化升级
  • 亚远景-ASPICE与ISO 26262评估标准:异同解析与协同实践
  • Linux基础练习题1
  • 谷歌正在美国测试一项基于机器学习的年龄识别技术
  • 前端技术栈详解
  • 【人工智能-15】OpenCV直方图均衡化,模板匹配,霍夫变换,图像亮度变换,形态学变换
  • 11辊矫平机小传
  • 布隆过滤器BloomFilter
  • Agent 开发进阶路:从基础执行到自主决策
  • 隐私灯是否“可信”?基于驱动层的摄像头指示机制探析
  • Android Jetpack App Startup 库详解:优化应用启动性能