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)
#示例数据

y
matrix(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)