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

R语言数据框:统计与当前行不同的唯一(SID,Var1)组合数

解决方法:统计每行对应的不同唯一(SID, Var1)组合数量

首先,我先明确你的需求:对于数据框中的每一行,计算所有与当前行的(SID, Var1)组合不相同的唯一(SID, Var1)组合的总数。

第一步:确认数据与唯一组合总数

先基于你的代码生成可复现的数据,并计算所有唯一的(SID, Var1)组合数量:

# 设置随机种子保证结果一致
set.seed(123)
df <- data.frame(SID=sample(1:4,15,replace=T), 
                 Var1=c(rep("A",5),rep("B",5),rep("C",5)), 
                 Var2=sample(2:4,15,replace=T))

# 计算唯一(SID, Var1)组合的总数
total_unique <- nrow(unique(df[, c("SID", "Var1")]))
total_unique
# 示例输出:9(对应你给出的示例数据里的9种唯一组合)

第二步:为每行计算目标值

因为我们只需要排除当前行所在的那一种唯一组合,所以每行的目标值就是total_unique - 1。下面提供两种实现方式:

方法1:用dplyr(简洁直观)

如果你习惯用tidyverse工具链,这个方法更流畅:

library(dplyr)

df_result <- df %>%
  mutate(diff_unique_count = n_distinct(select(., SID, Var1)) - 1)

# 查看前几行结果
head(df_result)

方法2:用Base R(无需额外安装包)

如果不想加载第三方包,base R也能轻松实现:

# 添加新列存储结果
df$diff_unique_count <- total_unique - 1

结果说明

运行代码后,数据框会新增一列diff_unique_count,每一行的值都是8(总唯一组合数9减去当前行自己的组合)。比如示例中任意一行的组合是(4,A),和它不同的唯一组合有8种;组合是(2,C)时,结果同样是8种,完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:53