当前位置: 首页 > 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.lryc.cn/news/606158.html

相关文章:

  • 数据结构第4问:什么是栈?
  • BR/EDR PHY帧结构及其具体内容
  • 51c自动驾驶~合集12
  • python基础语法3,组合数据类型(简单易上手的python语法教学)(课后习题)
  • 从0到1了解热部署
  • 一天两道力扣(7)
  • 力扣 hot100 Day61
  • 银河麒麟桌面操作系统:自定义截图快捷键操作指南
  • 机器人学和自动化领域中的路径规划方法
  • 解决Git升级后出现的问题
  • 国产芯+单北斗防爆终端:W5-D防爆智能手机,助力工业安全通信升级
  • 将开发的软件安装到手机:环境配置、android studio设置、命令行操作
  • ClickHouse vs PostgreSQL:数据分析领域的王者之争,谁更胜一筹?
  • 2683. 相邻值的按位异或
  • USRP捕获手机/路由器数据传输信号波形(中)
  • DeepCompare文件深度对比软件:智能差异分析与可视化功能深度解析
  • visual studio 安装总结
  • 搭建文件共享服务器samba————附带详细步骤
  • Kubernetes (K8s) 部署Doris
  • Redis过期策略
  • 【嵌入式电机控制#23】BLDC:开环运动控制框架
  • 设计模式:命令模式 Command
  • 法国声学智慧 ,音响品牌SK (SINGKING AUDIO) 重构专业音频边界
  • Web开发-PHP应用原生语法全局变量数据接受身份验证变量覆盖任意上传(代码审计案例)
  • HighgoDB查询慢SQL和阻塞SQL
  • 电商项目_性能优化_高并发缓存一致性
  • 当过滤条件不符合最左前缀时,如何有效利用索引? | OceanBase SQL 优化实践
  • 0731 IO进程基础
  • FATFS文件系统
  • 从“救火”到“先知”:润建曲尺运维大模型如何重构网络运维价值链