R-“;“未熔化”;融化的数据帧恢复到原始尺寸
考虑以下数据框:R-“;“未熔化”;融化的数据帧恢复到原始尺寸,r,data-manipulation,R,Data Manipulation,考虑以下数据框: > df <- data.frame(x=sample(c(0,1),9,replace=T)) > df$x <- factor(df$x) > df x 1 1 2 1 3 0 4 1 5 0 6 0 7 0 8 1 9 1 编辑: 谢谢@A.Webb的评论。我没有提到其他任务。我有一个大数据帧(994704行),它应该根据另一个字段(数字)(比如“y”)划分为23个204x212矩阵或数组(每个43248行),以便转换为光栅:
> df <- data.frame(x=sample(c(0,1),9,replace=T))
> df$x <- factor(df$x)
> df
x
1 1
2 1
3 0
4 1
5 0
6 0
7 0
8 1
9 1
编辑:
谢谢@A.Webb的评论。我没有提到其他任务。我有一个大数据帧(994704行),它应该根据另一个字段(数字)(比如“y”)划分为23个204x212矩阵或数组(每个43248行),以便转换为光栅:
> df
y x
1 27 1
2 27 1
3 27 0
4 27 1
5 27 0
6 27 0
7 27 0
8 27 1
9 27 1
10 27.5 1
11 27.5 1
12 27.5 0
13 27.5 1
14 27.5 0
15 27.5 0
16 27.5 0
17 27.5 1
18 27.5 1
...
994704 38 1
我的基本原理是,即使我不确定如何实施它,我的基本原理是:
for (i in unique(df$y)){
df.new.[i] <- raster(matrix(df$x[each 43248 rows],204,212,byrow=T))
}
for(唯一的i(df$y)){
基本上你有一个数值向量(不要把它变成一个因子)
这假设值的顺序正确(逐光栅,从光栅内左上角开始按行排列)
您设想的子集方法类似于
#example data
y <- rep(1:23, each=204*212)
df <- data.frame(x=dfx, y=y)
#示例数据
y基本上你有一个数值向量(不要把它变成因子)
这假设值的顺序正确(逐光栅,从光栅内左上角开始按行排列)
您设想的子集方法类似于
#example data
y <- rep(1:23, each=204*212)
df <- data.frame(x=dfx, y=y)
#示例数据
ymatrix(as.numeric(levels(df$x)[df$x]),3,3,byrow=TRUE)
?@A.Webb,谢谢你的评论。它确实有效。但是我在我的帖子上做了一个编辑,以密切反映我的真实问题。matrix(as.numeric(levels(df$x)[df$x]),3,3,byrow=TRUE)
?@A.Webb,谢谢你的评论。它确实有效。但我已经对我的帖子进行了编辑,以密切反映我真正的问题。
library(raster)
b <- brick(nrow=204,ncol=212,nl=23)
values(b) <- dfx
bs <- unstack(b)
#example data
y <- rep(1:23, each=204*212)
df <- data.frame(x=dfx, y=y)
r <- raster(nrow=204,ncol=212)
x <- list()
for (i in unique(df$y)) {
v <- df[df$y==i, 'x']
x[[i]] <- setValues(r, v)
}
s <- stack(x)