Вопрос не ясен, но с некоторыми предположениями и творческим мышлением из постера, это можно использовать:
> # ideally use new set.seed for each row
> x1 <- sample(c("up","down","no change"),10,replace = T)
> x2 <- sample(c("up","down","no change"),10,replace = T)
> x3 <- sample(c("up","down","no change"),10,replace = T)
> xd <- data.frame(x3,x2,x1)
> xd
x3 x2 x1
1 no change no change no change
2 down down up
3 up down no change
4 down down up
5 no change up no change
6 no change no change down
7 up no change down
8 up up up
9 no change no change no change
10 no change down up
> # leads to
> as.data.frame(table(xd))
x3 x2 x1 Freq
1 down down down 0
2 no change down down 0
3 up down down 0
4 down no change down 0
5 no change no change down 1
6 up no change down 1
7 down up down 0
8 no change up down 0
9 up up down 0
10 down down no change 0
11 no change down no change 0
12 up down no change 1
13 down no change no change 0
14 no change no change no change 2
15 up no change no change 0
16 down up no change 0
17 no change up no change 1
18 up up no change 0
19 down down up 2
20 no change down up 1
21 up down up 0
22 down no change up 0
23 no change no change up 0
24 up no change up 0
25 down up up 0
26 no change up up 0
27 up up up 1
> # alternatively, using t()
> as.data.frame(table(t(xd)))
Var1 Freq
1 down 8
2 no change 13
3 up 9
> #or
> table(t(xd))
down no change up
8 13 9
> table(xd)
, , x1 = down
x2
x3 down no change up
down 0 0 0
no change 0 1 0
up 0 1 0
, , x1 = no change
x2
x3 down no change up
down 0 0 0
no change 0 2 1
up 1 0 0
, , x1 = up
x2
x3 down no change up
down 2 0 0
no change 1 0 0
up 0 0 1
> # alternatively (again depends on what original posted is looking for):
> t3 <- table(xd$x3)
> t2 <- table(xd$x2)
> t1 <- table(xd$x1)
> dt <- t(rbind(as.vector(t3),as.vector(t2),as.vector(t1))); dt
[,1] [,2] [,3]
[1,] 2 4 2
[2,] 5 4 4
[3,] 3 2 4
# this should wrap it up...
#
> dt <- t(rbind(t3,t2,t1)); dt
t3 t2 t1
down 2 4 2
no change 5 4 4
up 3 2 4
>