首页 文章

在R中对数据帧进行子集,包括满足条件的观测值

提问于
浏览
1

我想随机地对数据帧进行子集化,条件是如果在子集中包含alpha = 1的观察,那么所有具有alpha = 1的观察必须包括在子集中 . 我简化了数据,所以它看起来像这样 .

df
 alpha beta gamma
 1    5     2
 1    6     3
 1    5     3
 2    3     2
 2    5     9
 2    2     6
 3    3     4
 3    4     7
 3    3     8
 4    3     4
 4    8     3
 4    4     9
 5    9     8
 5    5     5
 5    3     5

我应该使用什么命令来获取如下的子集?

df1
 alpha beta gamma
 1    5     2
 1    6     3
 1    5     3
 3    3     4
 3    4     7
 3    3     8
 5    9     8
 5    5     5
 5    3     5

 df2
 alpha beta gamma
 2    3     2
 2    5     9
 2    2     6
 4    3     4
 4    8     3
 4    4     9
 5    9     8
 5    5     5
 5    3     5

 df3
 alpha beta gamma
 1    5     2
 1    6     3
 1    5     3
 2    3     2
 2    5     9
 2    2     6
 5    9     8
 5    5     5
 5    3     5

具体而言,df中具有数字(1,5,2)的第一次观察随机落入子集df1和df3中 . 如果是这样,则必须遵循df(1,6,3)和(1,5,3)中的第二和第三次观察也包括在子集df1和df2中 .

我希望我的问题很明确 . 请帮忙 .

1 回答

  • 0

    试试这个

    str <- "alpha,beta,gamma
    1,5,2
    1,6,3
    1,5,3
    2,3,2
    2,5,9
    2,2,6
    3,3,4
    3,4,7
    3,3,8
    4,3,4
    4,8,3
    4,4,9
    5,9,8
    5,5,5
    5,3,5"
    
    df <- read.csv(textConnection(str))
    
    df[df$alpha %in% sample(unique(df$alpha), 3), ]
    

    产量

    alpha beta gamma
    4      2    3     2
    5      2    5     9
    6      2    2     6
    10     4    3     4
    11     4    8     3
    12     4    4     9
    13     5    9     8
    14     5    5     5
    15     5    3     5
    

相关问题