Arrays R-如何移动多维数组
我正在使用多维数组:Arrays R-如何移动多维数组,arrays,r,Arrays,R,我正在使用多维数组: > dim(Sales) [1] 35 71 5 我使用它来执行类似于比较全年销售额的操作: Sales_Increase_Y2_to_Y1 = Sales[,,2]-Sales[,,1] 现在,我希望能够转换一个维度来计算一行中所有年份的销售额增长: 销售[,,如何在此处调用上一年?] 构建示例多维阵列的示例: x = structure(list(Store = c(35L, 35L, 35L, 35L, 35L), Dept = c(71L, 71L,
> dim(Sales)
[1] 35 71 5
我使用它来执行类似于比较全年销售额的操作:
Sales_Increase_Y2_to_Y1 = Sales[,,2]-Sales[,,1]
现在,我希望能够转换一个维度来计算一行中所有年份的销售额增长:
销售[,,如何在此处调用上一年?]
构建示例多维阵列的示例:
x = structure(list(Store = c(35L, 35L, 35L, 35L, 35L), Dept = c(71L,
71L, 71L, 71L, 71L), Year = c(1, 2, 3, 4, 5), Sales = c(10908.04,
12279.99, 11061.82, 12288.1, 9950.55)), .Names = c("Store", "Dept",
"Year", "Sales"), row.names = c(NA, -5L), class = "data.frame")
> x
Store Dept Year Sales
1 35 71 1 10908.04
2 35 71 2 12279.99
3 35 71 3 11061.82
4 35 71 4 12288.10
5 35 71 5 9950.55
Sales <- array(NA, c(max(x$Store), max(x$Dept), max(x$Year)))
for (i in 1:nrow(x))
Sales[x[i,"Store"], x[i,"Dept"], x[i,"Year"]] <- x[i, "Sales"]
Sales[35,71,1]
x=structure(list(Store=c(35L,35L,35L,35L,35L,35L),Dept=c(71L,
71L,71L,71L,71L),年份=c(1,2,3,4,5),销售额=c(10908.04,
12279.9911061.8212288.119950.55),名称=c(“商店”、“部门”,
“年”、“销售额”,row.names=c(NA,-5L),class=“data.frame”)
>x
商店部门年度销售额
1 35 71 1 10908.04
2 35 71 2 12279.99
3 35 71 3 11061.82
4 35 71 4 12288.10
5 35 71 5 9950.55
销售奖金提示
在指定或提取数组(或矩阵)的部分时,可以像在示例中一样使用大量向量,也可以使用数组坐标矩阵
Sales[as.matrix(x[1:3])] <- x$Sales
但是,请注意,维度现在已经移动,将差异放在首位
> dim(Sales.diff)
[1] 4 35 71
但您可以使用aperm
> Sales.diff <- aperm(sd, c(2,3,1))
> dim(Sales.diff)
[1] 35 71 4
谢谢你的奖金提示!杰出的除了我不明白你所说的不同年份的差异在哪里,而不是另一个变量(例如存储)。此外,我仍然想知道如何直接访问上一年(或下一年)(无需通过差异)如果有任何可能的方法……我的意思是,如果您想知道不同年份之间的销售额差异,即维度3,您可以提供另一个维度,即1:2到apply
。如果您愿意,您也可以通过apply(…,2:3…)
计算storey
和storey-1
之间的差异(尽管这可能没有意义)。您可以执行Sales[,-1]-Sales[,-dim(Sales)[3]
。这也将保留维度。
> Sales.diff <- aperm(sd, c(2,3,1))
> dim(Sales.diff)
[1] 35 71 4
Sales[,,-1] - Sales[,,-dim(Sales)[3]]