如何计算矩阵列之间的差异百分比,并在迭代时将其添加到值矩阵

时间:2019-07-03 14:49:06

标签: r loops

我有几家商店(行)的每周(每周)销售矩阵。目标是计算周数和突出显示的异常值之间的百分比差异,例如,销售额增加/减少70-100%。我在循环逻辑和正确访问矩阵元素方面遇到麻烦。

到目前为止,我已经建立了一个循环来计算一行的差异,但是它将重复该行16次,而不是转到矩阵的下一行。另外,我添加了一个条件语句来突出显示w / condformat的值,但我认为我没有正确使用它。

library(condformat)

#Specifies location of cvs file  
dat <- read.csv("S:/Brooke Hughes/APT Store Level Data 5_28 .csv")

# Prints Table values
dat

# Checks class of data set
class(dat)

# Converts dataframe into matrix
mat <- as.matrix(dat)

class(mat)
condformat(mat)

# Sets column number to begin iterations 
for (col(mat) in colnames(mat)) {
  s1 <- col(mat)
  s2 <- col(mat) + 1
  #calculates percentage increase for two dates   
  percdiff <- ((s2-s1)/s1)

  print(percdiff)


  # Colors in cells of weeks with sales abnormalities 
  if (percdiff > .8 ){
    rule_text_color(s1, na.color= "#7D00FF")  
    rule_text_color(s2, na.color= "#7D00FF") 
  }


}

我希望输出显示原始矩阵,并在其中使用用于获取矩阵的两个列值之间的百分比差计算列。然后在具有百分比差异的列上,如果它们超过某个阈值,我希望突出显示这些值。

到目前为止,我有这个

  [,1] [,2]      [,3] [,4] [,5]      [,6]      [,7]  [,8]      [,9] [,10]      [,11]      [,12]      [,13]      [,14]      [,15]
[1,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[2,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[3,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[4,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667
[5,]    1  0.5 0.3333333 0.25  0.2 0.1666667 0.1428571 0.125 0.1111111   0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667

0 个答案:

没有答案