You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于字符类型合并DataFrame列,提取NBA球员姓名与薪资字段

处理思路

利用正则表达式区分字符内容类型,逐行提取纯字母的单元格拼接为球员姓名,提取纯数字的单元格作为薪资即可完成转换。

tidyverse 实现方案

# 加载依赖包
library(tidyverse)

# df为你导入的原始DataFrame
result <- df %>%
  rowwise() %>%
  mutate(
    # 筛选所有仅含字母的单元格拼接为姓名
    name = paste(c_across(everything())[str_detect(c_across(everything()), "^[A-Za-z]+$")], collapse = " "),
    # 筛选所有仅含数字的单元格转为薪资数值
    salary = as.numeric(c_across(everything())[str_detect(c_across(everything()), "^\\d+$")])
  ) %>%
  ungroup() %>%
  # 仅保留目标两列
  select(name, salary)

base R 实现方案

result <- data.frame(
  name = character(nrow(df)),
  salary = numeric(nrow(df)),
  stringsAsFactors = FALSE
)

for (i in seq_len(nrow(df))) {
  row_content <- unlist(df[i, ])
  # 提取姓名组成部分
  name_parts <- row_content[grepl("^[A-Za-z]+$", row_content)]
  result$name[i] <- paste(name_parts, collapse = " ")
  # 提取薪资
  salary_val <- row_content[grepl("^\\d+$", row_content)]
  result$salary[i] <- as.numeric(salary_val)
}

特殊情况兼容说明

如果数据中存在带缩写点、连字符的球员姓名,可将匹配姓名的正则调整为^[A-Za-z\\.\\-]+$即可兼容这类场景。

内容的提问来源于stack exchange,提问作者TomasC8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:15:03