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

基于parent和child列生成dyad列的R语言实现需求

基于parent/child列生成dyad列的解决方案

你的原始数据集:

data <- data.frame(parent = c(1, 1, 2, 2, 1, 2, 1, 1),
                   child = c(1, 2, 2, 1, 2, 2, 1, 2))

方法1:使用dplyr的case_when(推荐,可读性强)

直接对应你的映射规则,逻辑清晰易维护:

library(dplyr)

data <- data %>%
  mutate(dyad = case_when(
    parent == 1 & child == 1 ~ 1,
    parent == 1 & child == 2 ~ 2,
    parent == 2 & child == 2 ~ 3,
    parent == 2 & child == 1 ~ 4
  ))

方法2:Base R嵌套ifelse(无需额外包)

如果不想加载第三方库,用基础R即可实现:

data$dyad <- ifelse(data$parent == 1 & data$child == 1, 1,
                    ifelse(data$parent == 1 & data$child == 2, 2,
                           ifelse(data$parent == 2 & data$child == 2, 3, 4)))

方法3:矩阵映射(大数据场景更高效)

针对大规模数据集,这种方法通过预定义映射矩阵实现快速匹配:

# 构建映射矩阵:行对应parent值,列对应child值
map_matrix <- matrix(c(1, 2, 4, 3), nrow = 2, byrow = TRUE)
# 提取对应位置的dyad值
data$dyad <- map_matrix[cbind(data$parent, data$child)]

最终输出结果

运行任意一种方法后,都会得到目标数据集:

> data
  parent child dyad
1      1     1    1
2      1     2    2
3      2     2    3
4      2     1    4
5      1     2    2
6      2     2    3
7      1     1    1
8      1     2    2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:03:32