如何在R语言中对含相同列值的行进行排序对齐
数据框整理:将相同值对齐到同一行
首先,先把你的数据加载为R数据框:
Data <- structure(c(NA, "FGFR3", "FAT1", "ARID1A", "CREBBP", "HRAS", "SF3B1", "RHOB", "FBXW7", "KRAS", "TP53", "PIK3CA", "RHOA", "ASXL2", "HLA-A", "APC", "ATM", "ARID2", "PTEN", "CDH1", "RBM10", "ERBB4", "ERCC2", "BAP1", "KMT2D", "ERBB2", "SMC1A", "RB1", "BCLAF1", NA, NA, NA, NA, NA, NA, NA, "TP53", "RHOA", "FGFR3", "SF3B1", "PTEN", "RB1", "FAT1", "KDM6A", "ARID1A", "PIK3CA", "CDKN1A", "ERBB4", "RBM10", "ASXL2", "HRAS", "BAP1", "KMT2A", "ERBB3", "RHOB", "KRAS", "APC", "KMT2C", "BCLAF1", "KMT2D", "CDKN2A", "PSIP1", "FBXW7", "HLA-A", "ERBB2", "ATM", "RXRA", "CREBBP", "EP300", "ARID2", "KDM6A", "CDKN1A", "KMT2A", "ERBB3", "KMT2C", "CDKN2A", "PSIP1", "RXRA", "EP300", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), dim = c(35L, 3L), dimnames = list(NULL, c("F_d", "M_d", "unique"))) Data <- as.data.frame(Data)
接下来,执行以下代码完成整理:
# 提取所有非NA的唯一元素 all_elements <- unique(c(Data$F_d, Data$M_d, Data$unique)) all_elements <- all_elements[!is.na(all_elements)] # 构建新数据框 result <- data.frame( F_d = ifelse(all_elements %in% Data$F_d, all_elements, NA), M_d = ifelse(all_elements %in% Data$M_d, all_elements, NA), unique = ifelse(all_elements %in% Data$unique, all_elements, NA) ) # 查看结果(前10行示例) head(result, 10)
运行后,你会得到如下格式的结果(示例):
| F_d | M_d | unique |
|---|---|---|
| FGFR3 | FGFR3 | NA |
| FAT1 | FAT1 | NA |
| ARID1A | ARID1A | NA |
| CREBBP | CREBBP | NA |
| HRAS | HRAS | NA |
| SF3B1 | SF3B1 | NA |
| RHOB | RHOB | NA |
| FBXW7 | FBXW7 | NA |
| KRAS | KRAS | NA |
| TP53 | TP53 | NA |
代码说明:
- 先收集三列中所有非NA的唯一元素,确保每个元素只处理一次
- 通过
ifelse判断每个元素在对应列是否存在,存在则保留元素,否则填充NA - 最终生成的数据框会让相同元素对齐到同一行,完全匹配你的需求
内容的提问来源于stack exchange,提问作者Aryh
相关产品推荐
相关产品推荐

