Есть ли способ добавить переменные вместе в R? - PullRequest
0 голосов
/ 03 января 2019

Я хочу добавить две числовые переменные (strike1 и boycott1) вместе, чтобы получить переменную 'протеста', которая учитывает каждый тип протеста.Чтобы привести пример, первое значение этой новой переменной должно быть: 2: 3598.Я использовал метод ниже для других переменных, и он сработал, кто-нибудь знает, что может случиться на этот раз, если это произойдет иначе?

>table(strike
strike
           Not at all                  Once                 Twice            
             2055                  2555                   840                   
Three times .         More than three times
383                   605 
> table(boycott)
boycott
           Not at all                  Once                 Twice           
             1543                  2139                   625                   
 Three times .      More than three times
    214                    426
> strike1<-as.numeric(strike)
> boycott1<-as.numeric(boycott)
> table(strike1)
strike1
   1    2    3    4    5 
2055 2555  840  383  605 
> table(boycott1)
boycott1
   1    2    3    4    5 
1543 2139  625  214  426 
> protest<-strike1+boycott1
> table(protest)
 protest
  2   3   4   5   6   7   8   9  10 
604 284 895 179 193 124  72  38  93 
 > table(strike1, boycott1)
       boycott1
strike1   1   2   3   4   5
      1 604 154  31  10  35
      2 130 843  83  16  19
      3  21  83  98  24  13
      4   3  37  45  36  12
      5   7  36  23  26  93

Ответы [ 2 ]

0 голосов
/ 03 января 2019

То, что вы делаете, является попарным сложением.Вы получите 2, только когда strike1 и boycott1 равны 1.Если strike1[i] == 1 и boycott1[i] == 2, то protest[i] == 3.В зависимости от того, что именно вы пытаетесь сделать, это на самом деле может быть тем, что вы хотите (предположим, что ваши наблюдения сопряжены).

Чтобы получить ожидаемый ответ, вам нужно будет сделать:

protest <-  table( 2 * strike1 ) + table( 2 * boycott1 )  

но я бы предостерег от этого, поскольку не кажется (по крайней мере, мне), что это будет иметь смысл.С другой стороны, может быть, я чего-то упускаю из-за вашей цели.

Кроме того, вы получили предупреждение в своей строке, где вы добавили strike1 и boycott1 вместе?Что-то вроде:

In protest<-strike1+boycott1:
  longer object length is not a multiple of shorter object length

, потому что я думаю, что это должно было сгенерировать это предупреждение.

0 голосов
/ 03 января 2019

Чтобы получить желаемый результат, попробуйте таблица (удар) + таблица (бойкот).Это даст вам общее количество людей, ответивших на каждый удар на забастовку, к числу тех, кто дал этот ответ на бойкот.Хотя мне немного трудно понять, что это измеряет.

Это также не будет измеряться на индивидуальном уровне, как забастовка и бойкот.Если вам нужна переменная, измеряющая общее участие в протестах, вам лучше сделать что-то вроде

strike1 + boycott1 # ваш первоначальный подход

или

(strike1 + boycott1)/ 2 # по шкале исходных переменных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...