gpt4 book ai didi

r - 从数据框中提取重复行

转载 作者:行者123 更新时间:2023-12-04 10:57:28 25 4
gpt4 key购买 nike

我有一个我正在使用的大型数据框,前几行如下:

      Assay   Genotype   Sample    Result
1 001 G 1 0
2 001 A 2 1
3 001 G 3 0
4 001 NA 1 NA
5 002 T 1 0
6 002 G 2 1
7 002 T 2 0
8 002 T 4 0
9 003 NA 1 NA

我总共将处理 2000 个样本和每个样本的 168 个检测。

我想提取具有相同检测和样本的多个条目的行。我希望结果数据位于包含所有重复条目的数据框中,排序后重复项彼此相邻。从上面的示例中,结果将如下所示:
      Assay   Genotype   Sample    Result
1 001 G 1 0
4 001 NA 1 NA
6 002 G 2 1
7 002 T 2 0

最佳答案

便于加载的演示数据:

df <- structure(list(Assay = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L), Genotype = structure(c(2L, 1L, 2L, NA, 3L, 2L, 3L, 3L, NA), .Label = c("A", "G", "T"), class = "factor"), Sample = c(1L, 2L, 3L, 1L, 1L, 2L, 2L, 4L, 1L), Result = c(0L, 1L, 0L, NA, 0L, 1L, 0L, 0L, NA)), .Names = c("Assay", "Genotype", "Sample", "Result"), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9"))

您可以通过 duplicated 轻松获得重复的检测/ sample 对。 :
vars <- c('Assay', 'Sample')
dup <- df[duplicated(x[, vars]), vars]

导致:
> dup
Assay Sample
4 1 1
7 2 2

其中需要一个简单的 merge对于所需的结果:
> merge(dup, df)
Assay Sample Genotype Result
1 1 1 <NA> NA
2 1 1 G 0
3 2 2 G 1
4 2 2 T 0

关于r - 从数据框中提取重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com