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

基于3-4列使用dplyr移除重复行遇问题求助

问题分析与解决方法

你的去重代码逻辑完全搞反了,filter(duplicated(cbind(username, post, date)))是保留重复行,而非删除。duplicated()函数返回TRUE的行是“之前已经出现过相同组合的行”,用filter筛选这些行,相当于只留下重复的副本,反而把唯一的行删掉了。这就是为什么你手动检查还有重复,且重复运行代码还能继续删行——每次都在留更靠后的重复项。

正确的去重方法

方法1:用distinct(推荐,tidyverse风格更直观)

distinct可以直接指定去重的列,并用.keep_all = TRUE保留其他列的内容,默认保留每组重复中的第一行:

df <- df %>%
  distinct(username, post, date, .keep_all = TRUE)

方法2:修正duplicated的逻辑

如果坚持用duplicated,需要取反,保留第一次出现的非重复行:

df <- df %>%
  filter(!duplicated(cbind(username, post, date)))

额外注意:清理文本避免“假重复”

你的post列包含大量换行、缩进和空白字符,可能存在看起来相同但实际文本有差异的“假重复”。建议先清理文本再去重:

df <- df %>%
  # 去掉多余的空格、换行、制表符
  mutate(post = str_squish(post)) %>%
  distinct(username, post, date, .keep_all = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:17:30