如何随机抽样删除一些组和随机删除组内的一些个人?
Posted
技术标签:
【中文标题】如何随机抽样删除一些组和随机删除组内的一些个人?【英文标题】:How can I sample removing some groups randomly and some individuals within group randomly? 【发布时间】:2022-01-05 14:05:00 【问题描述】:a[:,4] 代表组。
a= [1 2 3 1;5 6 7 1;1 2 3 1;1 2 4 1;1 2 3 2;1 2 3 2;1 2 4 2;1 2 4 2;1 3 4 3;1 3 4 3;1 3 4 3;1 2 3 3 ]
12×4 MatrixInt64:
1 2 3 1
5 6 7 1
1 2 3 1
1 2 4 1
1 2 3 2
1 2 3 2
1 2 4 2
1 2 4 2
1 3 4 3
1 3 4 3
1 3 4 3
1 2 3 3
到目前为止,我已经对数据进行了分组。
我想从每个组中随机选择两个人并随机选择这两个组。有人可以帮忙吗?
a_dat=DataFrame(a,:auto)
gb=groupby(a_dat,:4)
GroupedDataFrame with 3 groups based on key: x4
First Group (4 rows): x4 = 1
x1 x2 x3 x4
Int64 Int64 Int64 Int64
1 1 2 3 1
2 5 6 7 1
3 1 2 3 1
4 1 2 4 1
⋮
Last Group (4 rows): x4 = 3
x1 x2 x3 x4
Int64 Int64 Int64 Int64
1 1 3 4 3
2 1 3 4 3
3 1 3 4 3
4 1 2 3 3
【问题讨论】:
【参考方案1】:你可以例如做:
gb2 = gb[sample(1:length(gb), 2, replace=false)] # sample 2 groups
combine(gb2, sdf -> sdf[sample(1:nrow(sdf), 2, replace=false), :]) # sample 2 observations per group
【讨论】:
以上是关于如何随机抽样删除一些组和随机删除组内的一些个人?的主要内容,如果未能解决你的问题,请参考以下文章