将零值编码到数据帧中

时间:2016-09-27 18:17:54

标签: r dataframe

我在R中使用一系列数据值,这些数据值具有x位置(沿横断面的距离)和z位置(对于给定x位置距离地面的距离)。在每个x,z坐标处没有数据值测量来进行我需要执行的分析,我需要在那里编码0。这是一个简短的代码示例,实际数据通常是14,000-20,000行。在Matlab中,我们通过创建一个空矩阵并填充它来解决这个问题。我需要一个标准化为max(z)的x,z矩阵。所以在下面的示例中,max z是8,max x是4,所以我需要一个4 x 8矩阵,只要没有给定值,就会输入0 - 只是不确定最好,最有效的方法这在R。

x <- c(1,1,1,1,1,2,2,3,3,4,4,4)
z <- c(1,4,5,6,7,1,4,2,8,1,2,5)
value <- c(9,9,9,9,9,9,9,9,9,9,9,9)

data.frame(x,z, value)

提前致谢!

1 个答案:

答案 0 :(得分:1)

在R中,你会像在Matlab中描述的那样做。首先,创建一个全零的矩阵:

df <- data.frame(x, z, value)
mat <- matrix(0, 4, 8)

然后是棘手的部分,你必须创建所选元素的向量

mat[cbind(df$x, df$z)] <- df$value

cbind基本上做的是创建一个2列矩阵,用于标识矩阵中的一组元素,然后分配相应的值。