我有一个非常困难的问题(至少对我来说),我花了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个小时才写出来。完全无法自行编程。我会尽量保持清晰,如果没有,我很抱歉。我正在这样做...
乍一看,我想说dplyr
软件包是您的朋友。