在R中比较向量语句:识别同语句异评论的重复记录
在R语言中找出语句相同但评论不同的记录
嘿,我来帮你搞定这个问题!针对你给出的6条带重复语句的记录,我们可以用两种实用的R语言方法找出那些语句相同但评论不一致的条目——一种用基础R(不用额外装包),另一种用tidyverse工具包(写法更直观易读)。
第一步:先构建你的示例数据
首先我们把你提供的示例数据转换成R能处理的数据框:
# 创建示例数据框 df <- data.frame( 语句 = c("good boy", "good student", "good employee", "good boy", "good student", "good employee"), 评论 = c("积极反馈", "积极反馈", "积极反馈", "消极反馈", "消极反馈", "积极反馈"), stringsAsFactors = FALSE # 避免把字符串转成因子 )
方法一:基础R实现(无需额外安装包)
这个方法用基础R的聚合函数和筛选来完成,逻辑清晰:
# 1. 按「语句」分组,计算每个组内不同评论的数量 comment_variety <- aggregate(评论 ~ 语句, data = df, function(x) length(unique(x))) # 2. 筛选出那些有多种评论的语句 conflicting_texts <- comment_variety$语句[comment_variety$评论 > 1] # 3. 从原数据中提取这些语句的所有记录 result_base <- df[df$语句 %in% conflicting_texts, ] # 查看结果 print(result_base)
方法二:tidyverse工具包实现(更简洁直观)
如果你习惯用tidyverse的语法(比如dplyr),这个写法会更贴近自然语言,处理复杂数据时扩展性更强:
# 先安装并加载tidyverse(如果还没装的话) # install.packages("tidyverse") library(tidyverse) # 分组筛选:按语句分组,留下评论种类多于1的组的所有记录 result_tidy <- df %>% group_by(语句) %>% filter(n_distinct(评论) > 1) %>% ungroup() # 查看结果 print(result_tidy)
结果说明
两种方法都会输出以下结果:
语句 评论 1 good boy 积极反馈 4 good boy 消极反馈 2 good student 积极反馈 5 good student 消极反馈
这正是我们要找的——good boy和good student这两个语句,它们既有积极反馈又有消极反馈,而good employee的评论全是积极的,所以不会被筛选出来。
内容的提问来源于stack exchange,提问作者Murali
相关产品推荐
相关产品推荐

