R - Voronoi 图的不同图块(多边形)中点值的总和
R - sum of the values of points in different tiles (polygons) of a Voronoi diagram
我有以下 df:
name x y
A -47 134
B -11 311
C 49 100
D -40 138
E -33 233
F 30 134
我正在使用 x 和 y 坐标生成由矩形包围的 Voronoi 镶嵌:
library(spatstat)
library(deldir)
rectangle <- owin(c(-100,100),c(0,400))
points <- ppp(x=df$x,y=df$y, window = rectangle)
voronoi <- dirichlet(points)
plot(voronoi)
现在假设我有另一个 df,df2:
x y value
-99 2 0.24
-5 32 0.24
51 242 0.08
26 54 0.25
我知道我可以使用 spatstat 和 quadratcount 计算我的 Voronoi 曲面细分的每个多边形中的点总和(在 df2 中),但是如果我想改为计算每个多边形中值的总和怎么办?
给我这样的东西:
name x y sum_of_value
A -47 134 0.24
B -11 311 0.32
C 49 100 0
D -40 138 0
E -33 233 0
F 30 134 0.25
我不明白你的预期输出。使用 by.ppp
我可以生产
下面的输出可能是您想要的?
library(spatstat)
library(deldir)
df <- structure(list(name = c("A", "B", "C", "D", "E", "F"),
x = c(-47L, -11L, 49L, -40L, -33L, 30L),
y = c(134L, 311L, 100L, 138L, 233L, 134L)),
.Names = c("name", "x", "y"),
row.names = 1:6,
class = "data.frame")
rectangle <- owin(c(-100,100),c(0,400))
points <- ppp(x=df$x,y=df$y, window = rectangle)
voronoi <- dirichlet(points)
plot(voronoi)
text(df$x, df$y, labels = df$name)
df2 <- structure(list(x = c(-99L, -5L, 51L, 26L),
y = c(2L, 32L, 242L, 54L),
value = c(0.24, 0.24, 0.08, 0.25)),
.Names = c("x", "y", "value"),
row.names = 1:4,
class = "data.frame")
points2 <- as.ppp(df2, W = rectangle)
text(df2$x, df2$y, labels = df2$value)
values2 <- by(points2, voronoi, marks)
df$values <- sapply(values2, sum)
df
#> name x y values
#> 1 A -47 134 0.24
#> 2 B -11 311 0.00
#> 3 C 49 100 0.49
#> 4 D -40 138 0.00
#> 5 E -33 233 0.08
#> 6 F 30 134 0.00
我有以下 df:
name x y
A -47 134
B -11 311
C 49 100
D -40 138
E -33 233
F 30 134
我正在使用 x 和 y 坐标生成由矩形包围的 Voronoi 镶嵌:
library(spatstat)
library(deldir)
rectangle <- owin(c(-100,100),c(0,400))
points <- ppp(x=df$x,y=df$y, window = rectangle)
voronoi <- dirichlet(points)
plot(voronoi)
现在假设我有另一个 df,df2:
x y value
-99 2 0.24
-5 32 0.24
51 242 0.08
26 54 0.25
我知道我可以使用 spatstat 和 quadratcount 计算我的 Voronoi 曲面细分的每个多边形中的点总和(在 df2 中),但是如果我想改为计算每个多边形中值的总和怎么办?
给我这样的东西:
name x y sum_of_value
A -47 134 0.24
B -11 311 0.32
C 49 100 0
D -40 138 0
E -33 233 0
F 30 134 0.25
我不明白你的预期输出。使用 by.ppp
我可以生产
下面的输出可能是您想要的?
library(spatstat)
library(deldir)
df <- structure(list(name = c("A", "B", "C", "D", "E", "F"),
x = c(-47L, -11L, 49L, -40L, -33L, 30L),
y = c(134L, 311L, 100L, 138L, 233L, 134L)),
.Names = c("name", "x", "y"),
row.names = 1:6,
class = "data.frame")
rectangle <- owin(c(-100,100),c(0,400))
points <- ppp(x=df$x,y=df$y, window = rectangle)
voronoi <- dirichlet(points)
plot(voronoi)
text(df$x, df$y, labels = df$name)
df2 <- structure(list(x = c(-99L, -5L, 51L, 26L),
y = c(2L, 32L, 242L, 54L),
value = c(0.24, 0.24, 0.08, 0.25)),
.Names = c("x", "y", "value"),
row.names = 1:4,
class = "data.frame")
points2 <- as.ppp(df2, W = rectangle)
text(df2$x, df2$y, labels = df2$value)
values2 <- by(points2, voronoi, marks)
df$values <- sapply(values2, sum)
df
#> name x y values
#> 1 A -47 134 0.24
#> 2 B -11 311 0.00
#> 3 C 49 100 0.49
#> 4 D -40 138 0.00
#> 5 E -33 233 0.08
#> 6 F 30 134 0.00