Как мне считать взлеты, падения и без изменений в этом векторе R - PullRequest
0 голосов
/ 09 марта 2020

У меня есть вектор повышения, понижения и без изменений:

This is the vector of up, down and no change

Я использовал table(x), но получаю таблицу только с 1 и 0. С Этот вектор мне нужен, чтобы составить таблицу распределения частот, я знаю, как это сделать, но не с помощью символа или строки. Также я использовал sort(table(x)).

1 Ответ

0 голосов
/ 10 марта 2020

Вопрос не ясен, но с некоторыми предположениями и творческим мышлением из постера, это можно использовать:

> # 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
>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...