我正在尝试在 R 中进行数据排序,我有大约 10,000 行,我想对其中至少一列具有不同等位基因的行进行排序

问题描述 投票:0回答:1

例如我的数据如下所示:

|ID|1160|1160|1216|1216|1132|1132|
|--|:---|:---|:---|:---|:---|:---|
|01|T   |T   |T   |T   |T   |T   |
|02|T   |T   |T   |T   |T   |G   |
|03|A   |G   |NA  |NA  |A   |A   |
|04|I   |I   |I   |I   |I   |I   |
|05|NA  |NA  |NA  |NA  |NA  |NA  |
|06|G   |G   |G   |G   |G   |G   |

我期待的结果是:

|ID|1160|1160|1216|1216|1132|1132|
|--|:---|:---|:---|:---|:---|:---|
|02|T   |T   |T   |T   |T   |G   |
|03|A   |G   |NA  |NA  |A   |A   |
r rstudio
1个回答
0
投票

您可以计算唯一值的数量并保留有多个的行。

dat[
    sapply(data.frame(t(dat[, -1])), \(x) length(unique(x)) > 1),
]
  ID 1160 1160 1216 1216 1132 1132
2  2    T    T    T    T    T    G
3  3    A    G <NA> <NA>    A    A

数据

dat  <- structure(list(ID = 1:6, `1160` = c("T", "T", "A", "I", NA, "G"
), `1160` = c("T", "T", "G", "I", NA, "G"), `1216` = c("T", "T", 
NA, "I", NA, "G"), `1216` = c("T", "T", NA, "I", NA, "G"), `1132` = c("T", 
"T", "A", "I", NA, "G"), `1132` = c("T", "G", "A", "I", NA, "G"
)), class = "data.frame", row.names = c(NA, -6L))
© www.soinside.com 2019 - 2024. All rights reserved.