R: Таблица непредвиденных обстоятельств в квадрате

Я хочу сделать таблицу непредвиденных обстоятельств с наблюдениями и их прогнозами на основе нейронной сети. Поскольку я хочу, чтобы положительные значения были по диагонали, я хотел бы, чтобы моя таблица была квадратной, независимо от того, есть ли строки только с нулями. То есть я хотел бы иметь

   b
a   a b c d e f g
  a 1 0 1 0 2 1 0
  b 0 0 0 0 0 0 0
  c 0 0 0 0 0 0 0
  d 2 3 1 2 2 3 2
  e 1 2 1 1 0 1 3
  f 0 0 0 0 0 0 0
  g 4 2 1 0 3 1 0

Вместо:

> set.seed(1)
> b<-sample(letters[1:7],40,rep=TRUE)
> a<-sample(letters[1:4],40,rep=TRUE)
> 
> table(a,b)
   b
a   a b c d e f g
  a 1 0 1 0 2 1 0
  d 2 3 1 2 2 3 2
  e 1 2 1 1 0 1 3
  g 4 2 1 0 3 1 0

Как я могу это сделать?


person paulgr    schedule 24.07.2020    source источник


Ответы (1)


Преобразуйте a и b в factor с levels как union обоих:

tmp <- sort(union(a, b))
table(factor(a, levels = tmp), factor(b, levels = tmp))

#    a b c d e f g
#  a 0 1 1 2 2 1 4
#  b 2 1 1 1 2 3 2
#  c 4 0 1 2 0 1 1
#  d 0 1 1 1 3 1 1
#  e 0 0 0 0 0 0 0
#  f 0 0 0 0 0 0 0
#  g 0 0 0 0 0 0 0
person Ronak Shah    schedule 24.07.2020