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

如何从R语言data数据框提取test配对组合的全排列观测?

解决方法

要从data中提取test指定元素的所有双向配对观测(即A↔B、A↔C、B↔C的所有排列组合),可以用以下两种方法实现:

方法一:生成全排列配对后匹配

先生成test元素的所有有序配对组合,再筛选data中符合条件的行:

# 生成A、B、C的所有非自身有序配对
pairs <- expand.grid(x = test$iso1, y = test$iso1, stringsAsFactors = FALSE)
pairs <- pairs[pairs$x != pairs$y, ]

# 筛选data中匹配的观测
result <- data[
  paste(data$hosp1, data$hosp2) %in% paste(pairs$x, pairs$y),
]

print(result)

方法二:用无序配对标识筛选(更简洁)

给每个配对生成一个不区分顺序的标识,再和test的无序配对匹配:

# 为data的每行生成无序配对标识(按字母排序后拼接)
data$pair_tag <- apply(data[, c("hosp1", "hosp2")], 1, function(x) paste(sort(x), collapse = "-"))

# 生成test中所有无序配对的标识
target_tags <- combn(test$iso1, 2, function(x) paste(sort(x), collapse = "-"))

# 筛选匹配行并移除临时标识列
result <- data[data$pair_tag %in% target_tags, !names(data) %in% "pair_tag"]

print(result)

注意事项

你提供的data中存在大小写差异(如hosp2里的小写c),如果需要忽略大小写,可以在生成标识前统一转换为大写/小写,例如:

data$hosp1 <- toupper(data$hosp1)
data$hosp2 <- toupper(data$hosp2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:35:14