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

时间:2016-04-20 15:54:26

标签: r dataframe subset

我想随机地对数据帧进行子集化,条件是如果在子集中包含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 :(得分:0)

试试这个

04-20 15:58:41.233 2598-23393/com.not.tuncozer.not E/Error!: Value  of type java.lang.String cannot be converted to JSONObject

输出

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), ]