如何移除R语言数据框指定列单元格内的重复词汇?
问题修正方案
你的代码没生效的核心问题有两个:
- 拆分字符串用错了分隔符:
combinedmode字段是用**下划线_**分隔的,但你写了, - 最终合并用错了连接符:你需要的是短横线
-,但代码里用了,
修正后的基础R代码
先加载stringr包,调整拆分和合并的参数即可:
library(stringr) # 构造示例数据 df <- data.frame( id = 1:6, combinedmode = c( "Bicycle_Bicycle", "Bicycle_Bicycle_Train_Walking", "Bicycle_Train_Train_Bicycle", "Walking", "Bicycle_Train_Walking", "Bicycle" ), stringsAsFactors = FALSE ) # 生成去重后的新列 df$combinedmode2 <- sapply(df$combinedmode, function(x) { # 按下划线拆分字符串 mode_parts <- str_split(x, "_")[[1]] # 去重后用短横线连接 paste(unique(mode_parts), collapse = "-") })
tidyverse风格实现(更简洁)
如果习惯用管道式代码,可以用dplyr+purrr组合:
library(dplyr) library(purrr) library(stringr) df <- df %>% mutate(combinedmode2 = map_chr(combinedmode, ~ { mode_parts <- str_split(.x, "_")[[1]] paste(unique(mode_parts), collapse = "-") }))
处理后的最终结果
| id | combinedmode | combinedmode2 |
|---|---|---|
| 1 | Bicycle_Bicycle | Bicycle |
| 2 | Bicycle_Bicycle_Train_Walking | Bicycle-Train-Walking |
| 3 | Bicycle_Train_Train_Bicycle | Bicycle-Train |
| 4 | Walking | Walking |
| 5 | Bicycle_Train_Walking | Bicycle-Train-Walking |
| 6 | Bicycle | Bicycle |
内容的提问来源于stack exchange,提问作者Tina
相关产品推荐
相关产品推荐

