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

文本挖掘项目中拆分数据框行名遇报错的解决方案求助

解决拆分行名时的重复行名错误

你遇到的这个报错,核心原因是数据框的行名必须唯一——当你试图把Adidas重复设为多行的行名时,R会直接抛出double 'row.names' not allowed的提示,毕竟同一个行名对应多条数据是不被允许的。

正确的思路不是修改原行名,而是新增两列分别存储公司名称和年份,这样既保留了原始行名的唯一性,又能满足你按公司+年份分析词表变化的需求。下面给你两种实用的实现方法:

方法1:基础R原生实现

# 提取原始行名
row_names <- rownames(df1)

# 拆分前先去掉末尾的".txt"后缀,再按"_"分割字符串
cleaned_names <- sub("\\.txt$", "", row_names)
split_names <- strsplit(cleaned_names, "_")

# 将拆分结果转换为数据框,并命名列名
company_year <- do.call(rbind, split_names)
colnames(company_year) <- c("Company", "Year")

# 把公司和年份列合并到原数据框
df1 <- cbind(company_year, df1)

# 可选:将Year列转为数值型,方便后续时间维度分析
df1$Year <- as.numeric(df1$Year)

方法2:tidyverse工具包(更简洁直观)

如果你习惯用tidyverse的语法,tidyr::separate()可以一步完成拆分操作:

library(tidyverse)

df1 <- df1 %>%
  # 先把行名转为普通列
  rownames_to_column("Original_Row") %>%
  # 按"_"拆分出公司和年份,同时去掉年份里的".txt"
  separate(Original_Row, into = c("Company", "Year"), sep = "_") %>%
  mutate(Year = str_remove(Year, "\\.txt$") %>% as.numeric()) %>%
  # 可选:如果不需要保留原始行名列,可删除此步
  column_to_rownames("Original_Row")

这样处理后,你就会得到Company和Year两个新列,完全可以支撑你研究词表随时间发展的需求,同时不会破坏数据框的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:01:35