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

如何处理R数据框:提取两列重复值对应列数据并生成新数据框

解决方法

首先,先修正一下你创建数据框的代码,原代码里用<-在data.frame()内赋值会导致列名异常,改用=更规范:

df <- data.frame(
  A = 1:5,
  B = c("A","B", "C", "B",'C'),
  C = c("A", "A", "B", 'B', "B")
)

接下来,根据你的需求,我们需要筛选出列B与列C值相等,且该值在列C中重复出现的行,最终保留B列和重命名后的Dupvalues(即原C列)。下面提供两种实现方式:

基础R方法

  1. 先找出列C中出现次数≥2的重复值:
dup_c_values <- names(which(table(df$C) >= 2))
  1. 筛选符合条件的行并调整列名:
df2 <- df[df$B == df$C & df$C %in% dup_c_values, c("B", "C")]
names(df2)[2] <- "Dupvalues"

运行后得到的df2就是你想要的结果:

> df2
  B Dupvalues
1 A         A
4 B         B

dplyr 方法(更简洁)

如果你习惯用tidyverse工具链,可以用dplyr实现:

library(dplyr)

df2 <- df %>%
  # 按C列分组,判断每组出现次数是否≥2
  group_by(C) %>%
  filter(n() >= 2, B == C) %>%
  ungroup() %>%
  # 选择B列,并将C列重命名为Dupvalues
  select(B, Dupvalues = C)

这样也能得到完全一致的目标数据框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:41:46