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

R语言中用户名变为行号如何修复?保留原用户名的代码调整

问题:处理数据框时丢失行名(用户名)

我用dplyr::bind_rows生成了Offense.Passing.Stats数据框,初始视图里行名是MonsterWyatt、rvmo这类用户名,但执行bind_rows、gather、na.omit处理后,行名变成了行号,原用户名全部丢失。试过其他过滤方法没用,求代码修复,让处理后的数据保留用户名。


初始数据状态

初始Offense.Passing.Stats视图:

| Touchdowns | Interceptions |
                 | <int>      | <int>         |
                 | --------   | --------      |
MonsterWyatt...1 | 3          | NA            |
rvmo...2         | 3          | NA            |
MonsterWyatt...3 | NA         | 4             |
rvmo...4         | NA         | 4             |

出错的代码

library(tidyverse)

Offense.Passing.Stats = Offense.Passing.Stats %>%
  bind_rows() %>%
  gather(statistic, value, "Touchdowns":"Passing.Yards") %>%
  na.omit()

View(Offense.Passing.Stats)

处理后丢失用户名的结果

处理后视图:

|    statistic  | value    |
      |      <chr>    | <int>    |
1     |    Touchdowns |    3     |
2     |    Touchdowns |    3     |
18    | Interceptions |    4     |
19    | Interceptions |    4     |

修复方案

核心问题是tidyverse的函数默认不会保留行名,所以需要先把行名转换成数据框的一列,再进行后续处理:

library(tidyverse)

Offense.Passing.Stats = Offense.Passing.Stats %>%
  # 第一步:把行名提取为单独的列,命名为username
  rownames_to_column(var = "username") %>%
  bind_rows() %>%
  gather(statistic, value, "Touchdowns":"Passing.Yards") %>%
  na.omit() %>%
  # 可选:清理用户名里的...1这类自动添加的后缀
  mutate(username = str_remove(username, "\\.\\.\\.\\d+$"))

View(Offense.Passing.Stats)

修复后结果

处理后保留用户名的视图:

|    username   |    statistic  | value    |
      |      <chr>    |      <chr>    | <int>    |
1     | MonsterWyatt |    Touchdowns |    3     |
2     | rvmo         |    Touchdowns |    3     |
3     | MonsterWyatt | Interceptions |    4     |
4     | rvmo         | Interceptions |    4     |

关键说明

  • rownames_to_column(var = "username"):这是保留用户名的核心步骤,把原本作为行名的用户名转换成数据框的一列,后续所有操作都会保留这列数据。
  • str_remove部分:如果你的用户名后面带有...1这类自动生成的后缀,可以用这行代码清理掉;如果没有后缀,直接删掉这行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:55:56