如何将数据框投射到具有时间维度的星星对象?
How can I cast a data frame to a stars object with a time dimension?
假设我有一个包含空间列 (x,y)、时间列 (time) 和数据列 (value) 的数据框。我如何使用 st_as_stars
正确地将其强制转换为星星对象?
df <- expand_grid(time=1:10,
x=1:10,
y=1:10)
df$value <- 1:1000
这是数据框的原始顺序:
> head(df)
# A tibble: 6 x 4
time x y value
<int> <int> <int> <int>
1 1 1 1 1
2 1 1 2 2
3 1 1 3 3
4 1 1 4 4
5 1 1 5 5
6 1 1 6 6
当我尝试将数据框转换为 stars
对象时,此处指定的内容不正确:
s <- st_as_stars(df,
dimensions=st_dimensions(time=sort(unique(df$time)),
x=sort(unique(df$x)),
y=sort(unique(df$y)),
point=TRUE),
dims=c('time','x','y'))
这个星星对象有问题。 (1) 'y' 列被作为属性。
> s
stars object with 3 dimensions and 2 attributes
attribute(s):
y value
Min. : 1.0 Min. : 1.0
1st Qu.: 3.0 1st Qu.: 250.8
Median : 5.5 Median : 500.5
Mean : 5.5 Mean : 500.5
3rd Qu.: 8.0 3rd Qu.: 750.2
Max. :10.0 Max. :1000.0
dimension(s):
from to offset delta refsys point values x/y
time 1 10 0.5 1 NA NA NULL [x]
x 1 10 10.5 -1 NA NA NULL [y]
y 1 10 0.5 1 NA NA NULL
并且 (2) 将 stars 对象转换回数据框显示数据 'value' 未按原始数据框排序。
> head(as.data.frame(s))
time x y y.1 value
1 1 10 0.5 1 91
2 2 10 0.5 1 191
3 3 10 0.5 1 291
4 4 10 0.5 1 391
5 5 10 0.5 1 491
6 6 10 0.5 1 591
如何正确地将数据框来回投射到 stars
对象?
stars
对象和方法非常有用,但我很纳闷为什么我做不出这个看似简单的数据转换。任何帮助将不胜感激。
你试过了吗
st_as_stars(df, dims = c("x", "y", "time"))
?
假设我有一个包含空间列 (x,y)、时间列 (time) 和数据列 (value) 的数据框。我如何使用 st_as_stars
正确地将其强制转换为星星对象?
df <- expand_grid(time=1:10,
x=1:10,
y=1:10)
df$value <- 1:1000
这是数据框的原始顺序:
> head(df)
# A tibble: 6 x 4
time x y value
<int> <int> <int> <int>
1 1 1 1 1
2 1 1 2 2
3 1 1 3 3
4 1 1 4 4
5 1 1 5 5
6 1 1 6 6
当我尝试将数据框转换为 stars
对象时,此处指定的内容不正确:
s <- st_as_stars(df,
dimensions=st_dimensions(time=sort(unique(df$time)),
x=sort(unique(df$x)),
y=sort(unique(df$y)),
point=TRUE),
dims=c('time','x','y'))
这个星星对象有问题。 (1) 'y' 列被作为属性。
> s
stars object with 3 dimensions and 2 attributes
attribute(s):
y value
Min. : 1.0 Min. : 1.0
1st Qu.: 3.0 1st Qu.: 250.8
Median : 5.5 Median : 500.5
Mean : 5.5 Mean : 500.5
3rd Qu.: 8.0 3rd Qu.: 750.2
Max. :10.0 Max. :1000.0
dimension(s):
from to offset delta refsys point values x/y
time 1 10 0.5 1 NA NA NULL [x]
x 1 10 10.5 -1 NA NA NULL [y]
y 1 10 0.5 1 NA NA NULL
并且 (2) 将 stars 对象转换回数据框显示数据 'value' 未按原始数据框排序。
> head(as.data.frame(s))
time x y y.1 value
1 1 10 0.5 1 91
2 2 10 0.5 1 191
3 3 10 0.5 1 291
4 4 10 0.5 1 391
5 5 10 0.5 1 491
6 6 10 0.5 1 591
如何正确地将数据框来回投射到 stars
对象?
stars
对象和方法非常有用,但我很纳闷为什么我做不出这个看似简单的数据转换。任何帮助将不胜感激。
你试过了吗
st_as_stars(df, dims = c("x", "y", "time"))
?