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

使用R tidyr::pivot_longer转换多列时如何拆分球员姓名与趋势值列

解决方法

你原代码的问题出在names_to和names_pattern的匹配逻辑有误:你现有列名的结构是[位置].[字段类型],第二个拆分项是字段属性(Player Name/Trend)而非球员名的取值,因此需要用.values参数指定将拆分出的属性作为新列名,对应值自动归入对应列即可实现需求。

运行代码

library(tidyr)
library(dplyr)

Data_trend <- data %>%
  tidyr::pivot_longer(
    cols = !`Trade Value`,
    names_to = c("Position", ".values"),
    names_pattern = "(.*)\\.(.*)"
  ) %>%
  # 按需重命名列、过滤空值行
  dplyr::rename(`Trend Value` = Trend) %>%
  dplyr::filter(`Player Name` != "")

参数说明

  • names_to = c("Position", ".values"):表示列名拆分出的第一部分作为Position列的取值,第二部分作为新的列名,对应数值直接归入对应列,会自动生成Player Name和Trend两列
  • names_pattern = "(.*)\\.(.*)":添加了转义符\\匹配列名中实际的点号,避免正则中.匹配任意字符的规则导致拆分错误
  • 后续的rename是把Trend列重命名为你要求的Trend Value,filter是过滤无球员信息的空行,不需要可以直接删除这两行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:48:02