在R中子集一个数据帧,包括满足条件的观测值

在R中子集一个数据帧,包括满足条件的观测值,r,dataframe,subset,R,Dataframe,Subset,我想随机地将dataframe子集,条件是如果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

我想随机地将dataframe子集,条件是如果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
具体来说,数字为(1,5,2)的df中的第一个观察值随机地落在子集df1和df3中。如果是这样,则必须遵循df(1,6,3)和(1,5,3)中的第二次和第三次观测也包括在子集df1和df2中

我希望我的问题是清楚的。请帮忙。

试试这个

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), ]
试试这个

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=1的观察包含在子集中,那么aplha=1的所有观察也必须包含在子集中。如果alpha=4的观察结果包含在子集中,那么aplha=4的所有观察结果也必须包含在子集中,等等。您需要澄清子集标准,因为它不是很清楚。标准是,如果alpha=1的观察结果包含在子集中,那么aplha=1的所有观测值也必须包含在子集中。如果alpha=4的观测包含在子集中,则aplha=4的所有观测也必须包含在子集中,以此类推。不幸的是,它不起作用。R说:“sample.int(length(x)、size、replace、prob)中的错误:无效的第一个参数”我非常适合我,所以您的数据和我的数据之间肯定存在差异。你能把dput(df)的输出添加到你的问题中吗?对不起,我的错。它确实有效。非常感谢你!不幸的是,它不起作用。R说:“sample.int(length(x)、size、replace、prob)中的错误:无效的第一个参数”我非常适合我,所以您的数据和我的数据之间肯定存在差异。你能把dput(df)的输出添加到你的问题中吗?对不起,我的错。它确实有效。非常感谢你!