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

在R语言中跨组完全移除存在矛盾产品使用记录的用户

解决用户-产品矛盾记录的R实现方案

嘿,我来帮你处理这个数据集的矛盾记录问题!咱们的目标是找出那些对同一产品同时存在使用(1)和未使用(0)记录的用户,然后把这些用户的所有记录都移除掉。下面是具体的R代码实现步骤:

1. 构造可复现的示例数据集

首先咱们先造一个和你描述一致的示例数据集,方便你测试代码:

# 先安装并加载dplyr包(如果还没装的话)
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# 设置随机种子保证结果可复现
set.seed(123)
sample_data <- data.frame(
  Name = rep(c("Alice", "Bob", "Charlie", "David"), each = 3),
  Product_Name = rep(c("Product A", "Product B", "Product C"), 4),
  Use = c(1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1)
)
# 给Bob添加一条矛盾记录(Product A同时有1和0)
sample_data <- rbind(sample_data, data.frame(Name = "Bob", Product_Name = "Product A", Use = 0))

2. 识别存在矛盾记录的用户

接下来咱们要找出那些有问题的用户:

# 第一步:检查每个用户-产品组合的Use值是否唯一
conflict_check <- sample_data %>%
  group_by(Name, Product_Name) %>%
  summarise(unique_use_count = n_distinct(Use), .groups = "drop")

# 第二步:提取所有存在矛盾记录的用户(即至少一个产品的Use值不唯一)
conflict_users <- conflict_check %>%
  filter(unique_use_count > 1) %>%
  pull(Name) %>%
  unique()

3. 移除矛盾用户的所有记录

最后一步就是清理数据集,把这些有问题的用户全部去掉:

# 得到清理后的干净数据集
clean_data <- sample_data %>%
  filter(!Name %in% conflict_users)

验证结果

你可以通过下面的代码验证一下,清理后的数据集里应该已经没有Bob的记录了(因为他对Product A有矛盾记录):

# 查看清理后的用户列表
unique(clean_data$Name)

这样就完成了数据集的清理,完美解决了矛盾记录的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:55:57