我确信比我更好的人有一个更优雅的解决方案,但这就是我最终所做的,在一个 7000 x 140000 的矩阵中随机抽样每个 1000 x 1000 网格。它冗长但有效
设置随机数(1 和 1000)的最小值和最大值并逐行工作以随机选择行值和列值并将该数字从矩阵中提取出来。
第一行 (7000/1000) 执行此操作七次。
然后将 1000 添加到第二行的最小值和最大值
每次提取这些值时,它们都会存储到“g”并使用 rbind 附加到 df_new。
重复直到我到达第 14 行,他们整理了一些数据并重命名。
最后是一个包含 98 个值的数据框,以及它们来自的网格编号及其在矩阵中的 x 和 y 坐标
对于 7000 x 14000 的矩阵和 1000 x 1000 的网格不是很灵活和固定。但我不需要改变这个.....但是!!!
我的愿望清单将是一个让我设置的功能..
- 网格大小(x 和 y),所以我可以有矩形网格
- 从每个网格中提取的样本数(1、2、3 或更多)
感谢大家的意见。非常感谢。
# MAKE A DUMMY MATRIX
set.seed(123)
df <- data.frame(matrix(runif(7000*14000), 14000))
# PICK 1 RANDOM VALUE FROM EACH 1000 BY 1000 GRID
# STARTING WITH THE TOP ROW (GRIDS 1 TO 7)
# THEN THE NEXT ROW (GRIDS 8 TO 9) ETC ETC
# UNITL GRID 98
set.seed(42)
# 1st row of grids
min=1
max=1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
df_new = c(ran_c, ran_r, df[ran_r,ran_c])
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 2nd row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 3rd row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 4th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 5th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 6th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 7th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 8th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 9th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 10th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 11th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 12th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 13th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# 14th row of grids
min = min + 1000
max = max +1000
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1,1000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,1001,2000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,2001,3000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,3001,4000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,4001,5000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,5001,6000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
ran_r = round(runif(1,min,max),0)
ran_c = round(runif(1,6001,7000),0)
g = c(ran_c, ran_r, df[ran_r,ran_c])
df_new = rbind(df_new, g)
# SOME DATA TIDYING
library(dplyr)
df_new = as.data.frame(df_new) # convert to data frame
df_new = df_new %>% mutate(grid = 1:n()) # add a sequential column named grid
df_new = df_new %>%
relocate(grid)
rownames(df_new)<-c(1:nrow(df_new)) # add row names 1 to 98 or nrow(df_new)
df_new = df_new %>%
rename(
x = 2,
y = 3,
value = 4) # rename columns
# Clear data no longer needed to prepare for next run
rm(g)
rm(max)
rm(min)
rm(ran_c)
rm(ran_r)