首页 > 解决方案 > 如何使用R识别双胞胎,然后随机选择并删除一个?

问题描述

我有一个包含一些双胞胎和三胞胎的数据集。对于每组双胞胎或三胞胎,我需要随机选择一个以保留在数据集中。此信息编码在两列中,FamilyID 和 FamilyOrder。双胞胎和三胞胎共享 FamilyID 和 FamilyOrder。非双胞胎兄弟姐妹共享一个 FamilyID,但具有不同的 FamilyOrder 值。


    FamilyID  FamilyOrder  y
    1         1            45
    1         2            33
    2         1            12
    3         1            76
    3         2            15
    3         2            59
    3         2            22
    4         1            56
    4         1            21

因此,在此示例代码中,FamilyID 3 包含一个非双胞胎(编码为 1)和一组三胞胎(编码为 2),而 FamilyID 4 有一对双胞胎。

我希望输出类似于:

FamilyID  FamilyOrder  y
1         1            45
1         2            33
2         1            12
3         1            76
3         2            22
4         1            56

它保留了正常的兄弟姐妹,但每个双胞胎和三胞胎都删除了一个。

标签: r

解决方案


你可以很容易地做到这一点dplyr...

library(dplyr)

df %>% 
  group_by(FamilyID, FamilyOrder) %>% 
  sample_n(1)

  FamilyID FamilyOrder     y
1        1           1    45
2        1           2    33
3        2           1    12
4        3           1    76
5        3           2    22
6        4           1    56

推荐阅读