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

发布于:2025-08-01 ⋅ 阅读:(25) ⋅ 点赞:(0)

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 的内置字符串格式化函数。

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


网站公告

今日签到

点亮在社区的每一天
去签到