基于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
相关产品推荐
相关产品推荐

