Rodrigo, fiquei em outra situação.
ponto=c(rep(3001,12),rep(3002,12),rep(3003,12))
planta=c(rep(seq(1:6),6))
valor1=seq(1.25,10,.25)
valor2=seq(10,1.25,-.25)
ramo1=c(rep("A",36))
ramo2=c(rep("B",36))
dados=cbind(ponto,planta,valor1,valor2);dados
ponto planta valor1 valor2
[1,] 3001 1 1.25 10.00
[2,] 3001 2 1.50 9.75
[3,] 3001 3 1.75 9.50
[4,] 3001 4 2.00 9.25
[5,] 3001 5 2.25 9.00
[6,] 3001 6 2.50 8.75
[7,] 3001 1 2.75 8.50
[8,] 3001 2 3.00 8.25
[9,] 3001 3 3.25 8.00
[10,] 3001 4 3.50 7.75
[11,] 3001 5 3.75 7.50
[12,] 3001 6 4.00 7.25
[13,] 3002 1 4.25 7.00
[14,] 3002 2 4.50 6.75
[15,] 3002 3 4.75 6.50
[16,] 3002 4 5.00 6.25
[17,] 3002 5 5.25 6.00
[18,] 3002 6 5.50 5.75
[19,] 3002 1 5.75 5.50
[20,] 3002 2 6.00 5.25
[21,] 3002 3 6.25 5.00
[22,] 3002 4 6.50 4.75
[23,] 3002 5 6.75 4.50
[24,] 3002 6 7.00 4.25
[25,] 3003 1 7.25 4.00
[26,] 3003 2 7.50 3.75
[27,] 3003 3 7.75 3.50
[28,] 3003 4 8.00 3.25
[29,] 3003 5 8.25 3.00
[30,] 3003 6 8.50 2.75
[31,] 3003 1 8.75 2.50
[32,] 3003 2 9.00 2.25
[33,] 3003 3 9.25 2.00
[34,] 3003 4 9.50 1.75
[35,] 3003 5 9.75 1.50
[36,] 3003 6 10.00 1.25
do.call(rbind, by(dados, dados[,1], function(x, ...) x[sample(1:nrow(x), ...), ], size=1))
ponto planta valor1 valor2
3001 3 1.75 9.50
3002 5 6.75 4.50
3003 4 9.50 1.75
No caso seria sortear apenas um valor.
A função que enviou resolve se as colunas valor 1 e valor 2 estiverem uma debaixo da outra, no exemplo seriam 72 linhas.
Se tiver solução, seria mais fácil,
Obrigado,