Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays R-如何移动多维数组_Arrays_R - Fatal编程技术网

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…)
计算store
y
和store
y-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]]