在不同类别中随机选择的不同大小的组

问题描述 投票:1回答:1

我有一个非常困难的问题(至少对我来说),我花了2个小时才写出来。完全无法自行编程。我会尽量保持清晰,如果没有,我很抱歉。我在excel中以一种非常粗糙的方式进行此操作,但是我确实需要对此进行编程。我有一个像这样的data.frame

id_pix id_lote clase   f1   f2
45       4      Sg    2460 2401
46       4      Sg    2620 2422
47       4      Sg    2904 2627
48       5      M     2134 2044
49       5      M     2180 2104
50       5      M     2127 2069
83      11      S     2124 2062
84      11      S     2189 2336
85      11      S     2235 2162
86      11      S     2162 2153
87      11      S     2108 2124

带有17451个“ id_pixel”(行),2080个“ id_lote”和9个“ clase”]

这是每个“类别”的“ id_lote”计数(v1是id_lote计数)

 clase   v1
1:     S 1099
2:     P  213
3:    Sg  114
4:     M  302
5:   Alg   27
6:    Az   77
7:    Po  228
8:   Cit   13
9:    Ma    7

我需要在“类”中随机分割“ id_lote”。我的意思是我有1099个“ id_lote”作为“ 339”“ id_pixel”(行)的“ S”“ clase”,我想随机选择50%的x“ id_pixel”(行)的“ id_lote”。并考虑到每个“类别”的大小(“ id_lote”的数量)不同,对每个“类别”执行此操作。我还希望能够更改选择的大小(50%,30%等)。而且我还想保留未选中的“ id_lote”集。我希望有人可以帮助我!

这里是可复制的示例

这是具有2个clase(S和Az),具有6个id_lote和13个id_pixel的数据

id_pix  id_lote clase   f1  f2
1       1        S    2909  2381
2       1        S    2515  2663
3       1        S    2628  3249
30      2        S    3021  2985
31      2        S    3020  2596
71      9        S    4725  4404
72      9        S    4759  4943
75      11       S    2728  2225
218     21       Az   4830  3007
219     21       Az   4574  2761
220     21       Az   5441  3092
1155    126      Az   7209  2449
1156    126      Az   7035  2932

结果可能是:

id_pix  id_lote clase   f1  f2
    1       1        S    2909  2381
    2       1        S    2515  2663
    3       1        S    2628  3249
    75      11       S    2728  2225
    1155    126      Az   7209  2449
    1156    126      Az   7035  2932

在类别“ S”中随机选择了50%的id_lote(4个id_lote中的2个),但是保留了选中的id_lote中的所有id_pixel。对于案例“ Az”相同,随机选择一个id_lote(在这种情况下为2个,其中1个),并且保留所选id_lote中的所有id_pixel。

colemand77提出的建议很有帮助。我认为dplyr软件包对此很有用,但我认为,如果这样做

df %>%
group_by(clase, id_lote) %>%
sample_frac(.3, replace = FALSE)

我得到每个分类的30%的数据,但没有像我需要的那样按id_lote分组!我的意思是选择了30%的行(id_pixel)而不是id_lote。我希望这个例子有助于理解我想做什么,并使其对每个人都有用。抱歉,如果我第一次不清楚。非常感谢!

我有一个非常困难的问题(至少对我来说),我花了2个小时才写出来。完全无法自行编程。我会尽量保持清晰,如果没有,我很抱歉。我正在这样做...

r grouping sample
1个回答
3
投票

乍一看,我想说dplyr软件包是您的朋友。

© www.soinside.com 2019 - 2024. All rights reserved.